Я сделал что-то подобное в прошлом, чтобы навести порядок на объекте:
EUR: {
name: 'Europe',
countries: {
FR: {
name: 'France',
cities: {}
},
DE: {
name: 'Germany',
cities: {}
},
ES: {
name: 'Spain',
cities: {}
},
order : ['DE', 'ES', 'FR']
}
}
Каждый объект будет получать order
ключ, который представляет собой массив ключей для этого объекта. Затем, когда вы перебираете объект, вы можете сохранить порядок, используя ключ order
. Недостатком является то, что вам нужно не только поддерживать объект (добавлять, обновлять, удалять), но также и ключ order
.
Хотя я настоятельно рекомендую на самом деле создавать массив объектов, а не вложенных объектов, поскольку ключи объектов не имеют порядка.
EUR: {
name: 'Europe',
countries: [{
name: 'France',
abbr: 'FR',
cities: {}
},{
name: 'Germany',
abbr: 'DE',
cities: {}
},{
name: 'Spain',
abbr: 'ES',
cities: {}
}]
}
Тогда можно перебирать EUR.countries
массив и отсортировать либо .name
ключ или ключ .abbr
.
EDIT: Я должен, вероятно, фактически показать итерацию, чтобы отсортировать их, не так ли?
var sorted = EUR.countries.sort(function(a, b){
return a.name.toLowerCase() > b.name.toLowerCase();
});
Я делаю имена строчными буквами, потому что функция сортировки работает с Unicode. Если он сортируется в неправильном порядке, просто переверните знак.
Вы пропустите (или больше) массив/с для сортировки. объекты фактически не имеют порядка. –
Если заказ действительно имеет значение для вас, используйте массив. Свойства объектов Javascript на самом деле не имеют порядка. – bobjoe
Ans: http://stackoverflow.com/questions/17684921/sort-json-object-in-javascript –