У меня есть массив объектов 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));
Вам нужно использовать оператор минус, проверьте этот фрагмент
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);
Используйте оператор -
:
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
.