我试图按制表符分隔数据的最后一个值对数组进行排序。 我的数据是这样的
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]);
}
我的错误是什么。在我的脚本中。我该怎么办?
答案 0 :(得分:0)
以下是您的代码:如果您需要进一步说明其运作方式,请告诉我
var array = ["AEDAG\t6\t5\t6", "AEDSG\t8\t5\t3", "AEEAP\t10\t5\t12", "AEEKP\t77\t5\t2", "AELKVT\t5\t6\t12"];
array.sort(function(a, b) {
return b.split(/\t+/)[3] - a.split(/\t+/)[3]
});
alert(JSON.stringify(array))
&#13;
答案 1 :(得分:0)
假设标签分隔值,我建议改变你的方式:
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.
我制作一个jsFiddle以确定其有效。 也许你需要一些格式,但你需要所有的信息并进行分类。