我试图按制表符分隔的数据的最后一个值对数组进行排序。我的数据是这样的
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 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看到它的工作。也许您需要某种格式,但是您拥有所需的所有信息并进行了排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句