Страницы

Поиск по вопросам

четверг, 6 июня 2019 г.

Как отсортировать массив объектов по их свойствам?

var a = {prop: 3, name: 'a'}, b = {prop: 2, name: 'b'}, c = {prop: 1, name: 'c'};
var array = [ a, b, c ], result = null;
result = array.sort(function(a, b){ var c = a.prop, d = b.prop;
if( c < b ){ return -1; }else if( c > b ){ return 1; }
return 0; });
for(var i in result){ console.log(result[i].name); // a, b, c } Так не работает... Добавлено: А в js так нельзя сортировать?? А какая разница сорту, что двигать местами?


Ответ

У вас две ошибки: Метод sort сортирует массив на месте, т.е. изменяет массив, к которому он применен. Если вы хотите сохранить исходный массив, сделайте копию перед сортировкой: result = array.slice().sort() Вы используете b в сравнениях (c < b) и (c > b), хотя хотели d. Исправленная программа работает как надо.

Комментариев нет:

Отправить комментарий