2013-03-31 4 views
-3

У меня есть Array, как показано ниже, как бы я сортировал его по ключам объектов, которые он содержит?sorting Array of Objects

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.

Сортировка по определению, влияет на порядок; если вначале нет определенного порядка, вы не можете его изменить.