我有一个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));
答案 0 :(得分: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
之前。 注意:上面的代码按降序对数组进行排序,如果要反转排序顺序,则只需返回a.w * a.h - b.w * b.h
。
答案 1 :(得分: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);
&#13;