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. Исправленная программа работает как надо.
Комментариев нет:
Отправить комментарий