2014-01-16 32 views
0

这里是我的数组:排序JavaScript数组与非数字键

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] 

我已经尝试了许多解决方案,并没有他们已经取得成功。我想知道你们中的一个是否有任何想法如何对数组进行排序。

+0

你的意思是:“这是我的数组,但我真的想要一个对象”?并且对象没有顺序... – elclanrs

+2

这不是一个数组,它是一个_object_。 JavaScript数组具有严格的数字键,但对象在动态确定时使用'[]'语法来访问属性。否则,它们将是点属性。 (在技术上你将它声明为一个数组,但是然后向它添加了额外的对象属性) –

+0

而且,JavaScript中的对象属性本质上不是有序的。 –

回答

0

正如评论所说,在这里你的问题不只是排序,而且你的数据结构是如何设置的。我想你会真正想要的这里是对象的数组,这看起来是这样的:

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; 
}); 
0

MDN website直摘自:

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; 
}); 

但是,这真的不是一个数组,所以你必须要重组到这一个。

+0

认为你可以做'return a.name> b.name'。 – elclanrs

1

简单的解决方案将是:

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