这是我的数组:
var a = [];
a["P.M.L."] = 44;
a["P.CO."] = 56;
a["M.É.D."] = 10;
现在我正在尝试对数组进行排序,使其看起来像:
["M.É.D." : 10, "P.M.L." : 44, "P.CO." : 56]
我尝试了很多解决方案,但没有一个成功。我想知道你们中是否有人知道如何对数组进行排序。
简单的解决方案是:
a.sort(function(x, y) {
return x.name - y.name;
})
正如评论中提到的,这里的问题不仅仅是排序,还包括数据结构的设置方式。我认为你真正想要的是一个对象数组,看起来像这样:
var a = [{name: "P.M.L", val: 44},
{name: "P.CO.", val: 56},
{name: "M.É.D.", val: 10}];
通过这种组织数据的新方式,您可以使用以下代码按
a
属性对 val
进行排序:
a.sort(function(x, y) {
return x.val - y.val;
});
直接取自MDN网站:
a.sort(function (a, b) {
if (a.name > b.name)
return 1;
if (a.name < b.name)
return -1;
// a must be equal to b
return 0;
});
但这实际上不是一个数组,因此您必须将其重组为一个数组。
根据 MDN[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort],这是对此类数组进行排序的最佳方法。
a.sort((a, b) => a.value - b.value);