使用字符串键和整数值对数组进行排序

Sort array with string keys and integer values

我正在尝试对 Javascript 数组进行排序。数组中的所有值都是数字。为此,我正在尝试使用 .sort 函数。但是当我将字符串作为数组中的键时,它似乎不起作用。

例如:

// Doesn't work
let numbers = [];
numbers['a'] = 5;
numbers['ld'] = 2;
numbers['la'] = 3;

numbers.sort((a, b) => {
    console.log('sort', a,b); // No output
    return 0;
});

但是像这样简单的事情确实有效。

// Works
let numbers2 = [100,10,50];
numbers2.sort((a, b) => {
    console.log('sort', a,b);
    return a-b;
});

console.log(numbers2);

演示:https://jsfiddle.net/

我做错了什么?如何根据值对第一个数组进行排序?

所以基本上我想要实现的是根据它们的值(升序或降序,对我来说无关紧要)对数组进行这样的排序:

numbers['a'] = 5;
numbers['la'] = 3;
numbers['ld'] = 2;

您不应在数组中使用字符串作为“键”/“索引”,因为默认数组方法无法访问它们。数组使用数字索引来引用一个值。您可以使用对象作为键值存储。在对象中,您可以使用字符串作为键来引用值。 然后您可以按如下方式对对象进行排序。

let numbers = {};
numbers["a"] = 5;
numbers["ld"] = 2;
numbers["la"] = 3;

numbers = Object.fromEntries(Object.entries(numbers).sort((a, b) => {
  return a[1] - b[1]
}));