如何在数组中存储排序值的索引键?

时间:2015-11-30 13:14:39

标签: 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   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]);

}

我的错误是什么。在我的脚本中。我该怎么办?

2 个答案:

答案 0 :(得分:0)

以下是您的代码:如果您需要进一步说明其运作方式,请告诉我

&#13;
&#13;
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;
&#13;
&#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以确定其有效。 也许你需要一些格式,但你需要所有的信息并进行分类。