我有一个关键数组,键作为字符串。现在我想按值递减排序。
这是预期的结果:
onTouchCancel onTouchEnd onTouchMove onTouchStart
但是:
[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;
});
答案 0 :(得分:0)
在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}
];
然后,您将能够按照Sort array of objects by string property value in JavaScript
中的说明对这些对象进行排序