按值降序对关联数组进行排序

Sort associative array by value descending

本文关键字:排序 数组 关联 降序      更新时间:2023-09-26

我有一个以键作为字符串的关联数组。现在我想按值降序对它们进行排序。

这是预期的结果:

[orange: 3, apple: 2,  banana: 1]

但有:

    var arr = [];
    arr["apple"] = 2;
    arr["orange"] = 3;
    arr["banana"] = 1;
    arr.sort(function(a,b) {
        return a.val - b.val;
    });

我收到初始订单:

[apple: 2, orange: 3, banana: 1]

在 JS 中,数组的键应该是非负整数。

如果使用其他键,则将数组视为纯对象,而不是数组:

var arr = [];
arr.apple = 2;
arr.length; // 0 -- array methods will ignore your property

由于您没有使用数组的特殊行为,因此您应该改用普通对象:

var arr = {
  apple: 2,
  orange: 3,
  banana: 1
};

但是,对象的属性不是排序的。所以对它们进行排序是没有意义的。

要绕过此限制,您可以使用对象数组,例如

var arr = [
  {key: "apple", value: 2},
  {key: "orange", value: 3},
  {key: "banana", value: 1}
];

然后,您将能够按照 JavaScript 中的按字符串属性值对对象数组进行排序中所述对这些对象进行排序