如何对包含数组的javascript对象进行排序?

时间:2014-12-20 18:12:44

标签: javascript arrays sorting

我有一个名为classes的对象,如下所示:

Object {d1: Array[6], a1: Array[6]};

我添加了一个新数组:classes.b1 = [{"id":1,"vprasan":true},{"id":2,"vprasan":true}]

如何对此对象进行排序,如下所示:Object {a1: Array[6], b1: Array[6], d1: Array[6]};

3 个答案:

答案 0 :(得分:2)

你不能。 JavaScript对象中的属性顺序未定义。

来自ECMAScript Third Edition (pdf)的对象的定义:

  

4.3.3对象
  一个对象是一个成员   类型对象。 这是一个无序的属性集合   包含原始值,对象或   功能。存储在a中的函数   对象的属性称为a   方法

答案 1 :(得分:1)

如在另一个答案中所述,您无法对对象进行排序,因此它“看起来”是一种特定的方式,因为对象本身是无序的。但是,我正在更自由地解释你的问题;在我看来,你想要按对象键,“a1”,“b1”,“d1”等进行排序。这样做很容易,然后你可以根据排序的键处理你的对象:

var classes = {d1: ['item1'], a1: ['item1','item2']};
classes.b1 = ['item1', 'item2', 'item3'];

var keys = Object.keys(classes);
keys.sort();

for (var i=0, n=keys.length; i<n; i++) {
    console.log(keys[i]);
    console.log(classes[keys[i]].length);
}

输出:

a1
2
b1
3
d1
1

答案 2 :(得分:0)

是的,如果订单很重要,你必须把它放在一个数组中:

var classes = [
    {name: 'a1', value: Array[6]},
    {name: 'b1', value: Array[6]},
    {name: 'd1', value: Array[6]}
];

然后查看这个问题进行排序。

Javascript - sort objects in an array alphabetically on one property of the array