Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数组中存储排序值的索引键?_Javascript_Arrays_Sorting - Fatal编程技术网

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

Javascript 如何在数组中存储排序值的索引键?,javascript,arrays,sorting,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

我试图按制表符分隔数据的最后一个值对数组进行排序。 我的数据是这样的

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数组=[“AEDAG 6 5 6”、“AEDSG 8 5 3”、“AEEAP 10 5 12”、“AEEKP 77 5 2”、“AELKVT 5 6 12”];
var指数=[];
var数据=[];
对于(var i=0;i
我犯了什么错。在我的剧本里。我该怎么做?

这是您的代码:如果您需要进一步说明它的工作原理,请告诉我

var数组=[“AEDAG\t6\t5\t6”、“AEDSG\t8\t5\t3”、“AEEAP\t10\t5\t12”、“AEEKP\t77\t5\t2”、“AELKVT\t5\t6\t12”];
array.sort(函数(a,b){
返回b.split(/\t+/)[3]-a.split(/\t+/)[3]
});
警报(JSON.stringify(array))
这是您的代码:如果您需要进一步说明它的工作原理,请告诉我

var数组=[“AEDAG\t6\t5\t6”、“AEDSG\t8\t5\t3”、“AEEAP\t10\t5\t12”、“AEEKP\t77\t5\t2”、“AELKVT\t5\t6\t12”];
array.sort(函数(a,b){
返回b.split(/\t+/)[3]-a.split(/\t+/)[3]
});

警报(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.
var数组=[“AEDAG 6 5 6”、“AEDSG 8 5 3”、“AEEAP 10 5 12”、“AEEKP 77 5 2”、“AELKVT 5 6 12”];
var数据=[];
对于(var i=0;ia[3]/1)//定义用于排序数据的自定义比较
返回1;
其他的
返回-1;
返回0;
});
var data\u formatted=data\u sorted.map(函数(项){
退货项目[0]+“\t\t”+项目[1]+“\t”+项目[2]+“\t”+项目[3];
});
警报(数据格式化)//打印所需的结果。
我很高兴看到它起作用。
也许您需要一些格式,但您已经获得了所需的所有信息并进行了排序。

如果使用制表符分隔的值,我建议您稍微改变一下操作方式:

    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.
var数组=[“AEDAG 6 5 6”、“AEDSG 8 5 3”、“AEEAP 10 5 12”、“AEEKP 77 5 2”、“AELKVT 5 6 12”];
var数据=[];
对于(var i=0;ia[3]/1)//定义用于排序数据的自定义比较
返回1;
其他的
返回-1;
返回0;
});
var data\u formatted=data\u sorted.map(函数(项){
退货项目[0]+“\t\t”+项目[1]+“\t”+项目[2]+“\t”+项目[3];
});
警报(数据格式化)//打印所需的结果。
我很高兴看到它起作用。
也许您需要某种格式,但您已经获得了所需的所有信息并进行了排序。

您确定不希望使用
对象而不是
空格分隔的数据
?或者我应该叫它什么。你可以用2D数组吗?像
array[“AEDAG”]=[6,5,6]
..@CodeiSir我想创建这样的2D数组[“AEDAG 6 5”]=[6][“AEDAG 6 5”]=[6]是一个对象,而不是数组。另外,为什么您希望使用
[6]
而不是
6
?是否确实不希望使用
对象
而不是
空格分隔的数据
?或者我应该叫它什么。你可以用2D数组吗?像
array[“AEDAG”]=[6,5,6]
..@CodeiSir我想创建这样的2D数组[“AEDAG 6 5”]=[6][“AEDAG 6 5”]=[6]是一个对象,而不是数组。还有,为什么您想要
[6]
而不是
6
?谢谢您的回答。但这并不是对原始数据进行排序。我希望输出是
AELKVT 5 6 12,AEEAP 10 5 12,AEDAG 6 5 6,AEDSG 8 5 3,AEEKP 77 5 2
?请注意,空格用于降价格式(1个制表符是4个空格),也许我们真的在讨论OP问题中的制表符,但是当你复制代码时,你会看到空格。谢谢你的回答。但这并不是对原始数据进行排序。我希望输出是
AELKVT 5 6 12,AEEAP 10 5 12,AEDAG 6 5 6,AEDSG 8 5 3,AEEKP 77 5 2
?请注意,空格用于标记格式(1个制表符是4个空格),也许我们在OP问题中真正讨论的是制表符,但当您复制代码时,您会看到空格。太好了。这很好用。我想用制表符分隔的数据输出。就像输入一样。这就是我迭代while循环的原因,比如
while(i
。没有循环迭代,我怎么做?任何可能的方法都可以使用
map
进行转换。我会更新答案。更新的代码应答和JSFIDDLE非常好。这很好用。我想用制表符分隔的数据输出。就像输入一样。这就是我迭代while循环的原因,比如
while(i
。没有循环迭代,我怎么做?任何可能的方法都可以使用