2013-03-31 77 views
-3

我有一个像下面这样的数组,我将如何通过它包含的对象的键对它进行排序?排序对象阵列

var myArray = [ 
    item : { 

    }, 
    anotherItem : { 

    } 
]; 

EDIT

myArray是一个对象不是数组。这会改变什么吗?

+1

我不认为这是有效的... =/ – jeremy

+3

这是无效的[Javascript Array](http://www.w3schools.com/js/js_obj_array.asp)语法。 – Aiias

+1

[如何对javascript对象数组进行排序?](http://stackoverflow.com/questions/979256/how-to-sort-an-array-of-javascript-objects)或[对一个对象进行排序数组由字段值在JavaScript中](http://stackoverflow.com/questions/1129216/sorting-objects-in-an-array-by-a-field-value-in-javascript) – Nope

回答

2

在Javascript中,array S可与数字键声明和object S可与字母数字键(属性)被声明。

这可能有助于看看Javascript的数组sort()方法。但是,虽然没有办法用非数字键来声明一个数组,但是正如icktoofay指出的那样,由于数组是一种特殊类型的对象,因此可以使用来为数组设置非数字键在他们宣布之后。

+0

作为一个数组是一个对象,它实际上*可以*具有非数字键,但是它们没有特殊的语法,因为它们存在于普通的对象文字中,并且它不会被数组专门处理。 – icktoofay

+0

@icktoofay - 感谢您指出有关数组的细节。 – Aiias

+0

对不起,你看我的编辑。 – 1vasari

0

首先,该语法无效:无法在数组文字中设置键。此外,虽然可能,但您可能不希望具有非数字属性的数组;数组被设计为保存数字属性。

即使这些被校正,在一个对象have no defined iteration order属性:

The mechanics and order of enumerating the properties […] is not specified.

排序,根据定义,影响的顺序;如果首先没有定义的顺序,你不能真的改变它。