【问题标题】:How to sort a bi-dimensional javascript array? [duplicate]如何对二维javascript数组进行排序? [复制]
【发布时间】:2014-10-26 09:28:07
【问题描述】:
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 未用作数组。它被用作对象(键值存储、映射、哈希表......) - 因此,它本质上是无序的。

标签: javascript arrays sorting


【解决方案1】:

您没有正确使用 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);
});

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

【讨论】:

  • 谢谢,但我该如何解决这个问题?这似乎是一个非常简单的问题,但我无法弄清楚如何简单地解决它。
  • 我认为这是一个明确的答案,你对哪一部分理解有问题?
猜你喜欢
  • 1970-01-01
  • 2019-12-11
  • 2014-03-02
  • 2021-12-13
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2013-09-13
  • 2018-06-21
相关资源
最近更新 更多