如何对二维 JavaScript 数组进行排序


var global=[];
var value=[50,1,4,29];
var title=["d","b","c","a"];
title.forEach(function(title,i) {
    global[title]=value[i];
})

我想按值对全局数组进行排序,但我不知道如何排序。

精确地我不能使用任何库jquery,下划线...

谢谢!

目标是知道哪个对象具有较小的值。a,b,c,d 的值为 50,1,4,29

我可以对值进行排序,但如何知道与此值关联的名称是什么?

您没有正确使用 global[] 作为循环中的数组。不能使用 [title] 引用数组项,可以push数组global.push(value[i])或使用global[i] = value[i] 。如果你使用这些方法中的任何一个,你可以调用'global.sort(('来对数组进行排序,这将给你[1, 29, 4, 50]。如果要将数组用作多维数组,则需要将循环更改为如下所示的内容:

title.forEach(function(title,i) {
    global[i] = {};
    global[i][title]=value[i];
})

这会给你带来[Object { d=50}, Object { b=1}, Object { c=4}, Object { a=29}]

如果你想对此进行排序,你可以使用 sort,它需要一个函数,您可以在其中编写自定义排序器,但我认为你不能使用它,因为你所有的键都是不同的。如果你所有的键都是一样的,比如'value',即[Object { value=50}, Object { value=1}, Object { value=4}, Object { value=29}],你可以做:

global.sort(function(a,b) {
    return parseInt(a.value, 10) - parseInt(b.value, 10);
});

但这不能应用于您的数组,因为所有键都不同。

最新更新