Сортировка массива объектов с помощью встроенной функции

1

У меня есть массив объектов js, который мне нужно отсортировать по области h * w. т.е. каждый объект имеет {h, w}. Я не получаю отсортированный массив.

У меня есть массив, как показано,

var blocks = [];

blocks.push({
  w: 320,
  h: 135
});
blocks.push({
  w: 320,
  h: 270
});
blocks.push({
  w: 320,
  h: 135
});
blocks.push({
  w: 320,
  h: 135
});
blocks.push({
  w: 320,
  h: 135
});

blocks.sort(function(a, b) {
  return (b.w * b.h < a.w * a.h);
});
console.log(JSON.stringify(blocks));
Теги:
arrays
sorting
numbers

2 ответа

1
Лучший ответ

Вам нужно использовать оператор минус, проверьте этот фрагмент

  var blocks=[]
  blocks.push({
        w: 320,
        h: 135
    });
    blocks.push({
        w: 320,
        h: 270
    });        
        blocks.push({
        w: 320,
        h: 135
    });
        blocks.push({
        w: 320,
        h: 135
    });
        blocks.push({
        w: 320,
        h: 135
    });

blocks.sort(function(a, b) {
            return (b.w * b.h - a.w * a.h);
        });
console.log(blocks);
3

Используйте оператор -:

blocks.sort(function(a, b) {
    return b.w * b.h - a.w * a.h;
});

Если возвращается обратный вызов sort:

  • отрицательное число, то sort поместит a до b
  • 0, то a и b равны, и sort решит, кто приходит перед кем.
  • положительное число, то sort поместит b до a.

Примечание. Вышеприведенный код сортирует массив в порядке убывания, если вы хотите изменить порядок сортировки, а затем просто верните aw * ah - bw * bh.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню