2013-03-31 79 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.

排序,根據定義,影響的順序;如果首先沒有定義的順序,你不能真的改變它。