我正在尝试按制表符分隔数据的最后一个值对数组进行排序。我的数据像这个
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]+"tt"+item[1]+"t"+item[2]+"t"+item[3];
});
alert(data_formated); //Print the desired result.
我做了一个jsFiddle来看看它能起作用。也许你需要一些格式,但你已经掌握了所需的所有信息。
这是您的代码:如果您需要进一步澄清它的工作原理,请告诉我
var array = ["AEDAGt6t5t6", "AEDSGt8t5t3", "AEEAPt10t5t12", "AEEKPt77t5t2", "AELKVTt5t6t12"];
array.sort(function(a, b) {
return b.split(/t+/)[3] - a.split(/t+/)[3]
});
alert(JSON.stringify(array))