使用字符串键和整数值对数组进行排序
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);
我做错了什么?如何根据值对第一个数组进行排序?
所以基本上我想要实现的是根据它们的值(升序或降序,对我来说无关紧要)对数组进行这样的排序:
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]
}));
我正在尝试对 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);
我做错了什么?如何根据值对第一个数组进行排序?
所以基本上我想要实现的是根据它们的值(升序或降序,对我来说无关紧要)对数组进行这样的排序:
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]
}));