Javascript 如何在数组中存储排序值的索引键?
我试图按制表符分隔数据的最后一个值对数组进行排序。 我的数据是这样的Javascript 如何在数组中存储排序值的索引键?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我试图按制表符分隔数据的最后一个值对数组进行排序。 我的数据是这样的 AEDAG 6 5 6 AEDSG 8 5 3 AEEAP 10 5 12 AEEKP 77 5 2 AELKVT 5 6 12 我尝试按最后一列(6,3,12,2,12)对数据进行排序,预期输出为 AELKVT 5 6 12 AEEAP 10 5 12 AEDAG 6 5
AEDAG 6 5 6
AEDSG 8 5 3
AEEAP 10 5 12
AEEKP 77 5 2
AELKVT 5 6 12
我尝试按最后一列(6,3,12,2,12)对数据进行排序,预期输出为
AELKVT 5 6 12
AEEAP 10 5 12
AEDAG 6 5 6
AEDSG 8 5 3
AEEKP 77 5 2
我试着按照剧本做
var array = ["AEDAG 6 5 6","AEDSG 8 5 3","AEEAP 10 5 12","AEEKP 77 5 2","AELKVT 5 6 12"];
var index = [];
var data = [];
for(var i = 0; i < array.length; i++)
{
var ech_line = array[i].split(/\t+/);
index.push(i);
data.push(ech_line[3]);
}
var sorted_index = [];
data.sort(function(a,b)
{
var xac = b-a;
sorted_index.push(data.indexOf(xac)); //Here i push the value of sorted data.
return xac;
});
var modified_data = [];
for(var i = 0; i < sorted_index.length; i++)
{
modified_data.push(sorted_index[i]);
}
var数组=[“AEDAG 6 5 6”、“AEDSG 8 5 3”、“AEEAP 10 5 12”、“AEEKP 77 5 2”、“AELKVT 5 6 12”];
var指数=[];
var数据=[];
对于(var i=0;i
我犯了什么错。在我的剧本里。我该怎么做?这是您的代码:如果您需要进一步说明它的工作原理,请告诉我
var数组=[“AEDAG\t6\t5\t6”、“AEDSG\t8\t5\t3”、“AEEAP\t10\t5\t12”、“AEEKP\t77\t5\t2”、“AELKVT\t5\t6\t12”];
array.sort(函数(a,b){
返回b.split(/\t+/)[3]-a.split(/\t+/)[3]
});
警报(JSON.stringify(array))
这是您的代码:如果您需要进一步说明它的工作原理,请告诉我
var数组=[“AEDAG\t6\t5\t6”、“AEDSG\t8\t5\t3”、“AEEAP\t10\t5\t12”、“AEEKP\t77\t5\t2”、“AELKVT\t5\t6\t12”];
array.sort(函数(a,b){
返回b.split(/\t+/)[3]-a.split(/\t+/)[3]
});
警报(JSON.stringify(array))
如果使用制表符分隔的值,我建议您稍微改变一下操作方式:
var array = ["AEDAG 6 5 6","AEDSG 8 5 3","AEEAP 10 5 12","AEEKP 77 5 2","AELKVT 5 6 12"];
var data = [];
for(var i = 0; i < array.length; i++)
{
var ech_line = array[i].split(/\t+/);
data.push(ech_line); //Each data row is the tab separated values splited array
}
var data_sorted = data.sort(function(a,b)
{
if(b[3]/1 > a[3]/1) //Define a custom comparision for sorting data
return 1;
else
return -1;
return 0;
});
var data_formated = data_sorted.map(function(item){
return item[0]+"\t\t"+item[1]+"\t"+item[2]+"\t"+item[3];
});
alert(data_formated); //Print the desired result.
var数组=[“AEDAG 6 5 6”、“AEDSG 8 5 3”、“AEEAP 10 5 12”、“AEEKP 77 5 2”、“AELKVT 5 6 12”];
var数据=[];
对于(var i=0;ia[3]/1)//定义用于排序数据的自定义比较
返回1;
其他的
返回-1;
返回0;
});
var data\u formatted=data\u sorted.map(函数(项){
退货项目[0]+“\t\t”+项目[1]+“\t”+项目[2]+“\t”+项目[3];
});
警报(数据格式化)//打印所需的结果。
我很高兴看到它起作用。
也许您需要一些格式,但您已经获得了所需的所有信息并进行了排序。如果使用制表符分隔的值,我建议您稍微改变一下操作方式:
var array = ["AEDAG 6 5 6","AEDSG 8 5 3","AEEAP 10 5 12","AEEKP 77 5 2","AELKVT 5 6 12"];
var data = [];
for(var i = 0; i < array.length; i++)
{
var ech_line = array[i].split(/\t+/);
data.push(ech_line); //Each data row is the tab separated values splited array
}
var data_sorted = data.sort(function(a,b)
{
if(b[3]/1 > a[3]/1) //Define a custom comparision for sorting data
return 1;
else
return -1;
return 0;
});
var data_formated = data_sorted.map(function(item){
return item[0]+"\t\t"+item[1]+"\t"+item[2]+"\t"+item[3];
});
alert(data_formated); //Print the desired result.
var数组=[“AEDAG 6 5 6”、“AEDSG 8 5 3”、“AEEAP 10 5 12”、“AEEKP 77 5 2”、“AELKVT 5 6 12”];
var数据=[];
对于(var i=0;ia[3]/1)//定义用于排序数据的自定义比较
返回1;
其他的
返回-1;
返回0;
});
var data\u formatted=data\u sorted.map(函数(项){
退货项目[0]+“\t\t”+项目[1]+“\t”+项目[2]+“\t”+项目[3];
});
警报(数据格式化)//打印所需的结果。
我很高兴看到它起作用。
也许您需要某种格式,但您已经获得了所需的所有信息并进行了排序。您确定不希望使用
对象而不是空格分隔的数据?或者我应该叫它什么。你可以用2D数组吗?像array[“AEDAG”]=[6,5,6]
..@CodeiSir我想创建这样的2D数组[“AEDAG 6 5”]=[6][“AEDAG 6 5”]=[6]是一个对象,而不是数组。另外,为什么您希望使用[6]
而不是6
?是否确实不希望使用对象而不是空格分隔的数据
?或者我应该叫它什么。你可以用2D数组吗?像array[“AEDAG”]=[6,5,6]
..@CodeiSir我想创建这样的2D数组[“AEDAG 6 5”]=[6][“AEDAG 6 5”]=[6]是一个对象,而不是数组。还有,为什么您想要[6]
而不是6
?谢谢您的回答。但这并不是对原始数据进行排序。我希望输出是AELKVT 5 6 12,AEEAP 10 5 12,AEDAG 6 5 6,AEDSG 8 5 3,AEEKP 77 5 2
?请注意,空格用于降价格式(1个制表符是4个空格),也许我们真的在讨论OP问题中的制表符,但是当你复制代码时,你会看到空格。谢谢你的回答。但这并不是对原始数据进行排序。我希望输出是AELKVT 5 6 12,AEEAP 10 5 12,AEDAG 6 5 6,AEDSG 8 5 3,AEEKP 77 5 2
?请注意,空格用于标记格式(1个制表符是4个空格),也许我们在OP问题中真正讨论的是制表符,但当您复制代码时,您会看到空格。太好了。这很好用。我想用制表符分隔的数据输出。就像输入一样。这就是我迭代while循环的原因,比如while(i
。没有循环迭代,我怎么做?任何可能的方法都可以使用map
进行转换。我会更新答案。更新的代码应答和JSFIDDLE非常好。这很好用。我想用制表符分隔的数据输出。就像输入一样。这就是我迭代while循环的原因,比如while(i
。没有循环迭代,我怎么做?任何可能的方法都可以使用