Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用非数字键对javascript数组排序_Javascript_Arrays_Sorting - Fatal编程技术网

使用非数字键对javascript数组排序

使用非数字键对javascript数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,这是我的阵列: 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(函数(a,b){ 如果(a.name>b.name) 返回1; 如果(a.nameb.name。 a.sor

这是我的阵列:

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(函数(a,b){
如果(a.name>b.name)
返回1;
如果(a.name

但这实际上不是一个数组,因此您必须将其重组为一个数组。

简单的解决方案是:

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}];
使用这种新的数据组织方式,您可以使用以下代码通过
val
属性对
a
进行排序:

a.sort(function(x, y) {
    return x.val - y.val;
});

你的意思是:“这是我的数组,但我真的想要一个对象”?对象没有顺序…这不是数组,而是对象。JavaScript数组具有严格的数字键,但对象在动态确定属性时使用
[]
语法访问属性。否则它们将是点属性。(从技术上讲,您将其声明为数组,但随后向其添加了其他对象属性)并且,JavaScript中的对象属性本质上是不有序的。使用集合:
[{name:'pml',val:44},{name:'pco',val:56},…]
您认为可以执行以下操作
返回a.name>b.name
a.sort(function(x, y) {
    return x.val - y.val;
});