繁体   English   中英

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

[英]How to sort javascript object which contains arrays?

我有一个称为类的对象,它看起来像这样:

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

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

ECMAScript第三版(pdf)中对象的定义:

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

正如在另一个答案中指出的那样,您无法对对象进行排序,因此当对象固有地无序时,它会以一种特定的方式“看起来”。 但是,我对您的问题的解释较为宽松。 在我看来,您想按对象键,“ 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

是的,如果顺序很重要,您必须将其放在数组中:

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

然后研究这个问题进行排序。

Javascript-按数组的一个属性按字母顺序对数组中的对象进行排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM