[英]How to store the index key of the sorting value in an array?
我試圖按制表符分隔的數據的最后一個值對數組進行排序。 我的數據是這樣的
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\\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))
假設制表符使用分隔的值,我建議稍微改變一下方法:
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看到它的工作。 也許您需要某種格式,但是您擁有所需的所有信息並進行了排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.