扔个三星炸死你2017-07-07 10:36:15
這個囉嗦的啊...
obj.sort( function(curr,next) {
return !!( curr.age-next.age )? curr.age-next.age: curr.top-next.top;
} );
這不就好了嗎
phpcn_u15822017-07-07 10:36:15
用自備的就是了
obj = obj.sort((a, b) => { return a.age - b.age || b.top - a.top;} );
console.log(obj);
因為你說的是top從高到低排序這種寫法是數字越大越在前面
你要是想要越小的話
你修改一下位置就好了b.top - a.top 改成a.top - b.top
習慣沉默2017-07-07 10:36:15
線上體驗 https://jsfiddle.net/hguyjgs8/1/
//假设top 不大于1000, 大于1000的,适度修改
var obj = [{
id: 1,
age: 20,
top: 5
}, {
id: 3,
age: 21,
top: 6
}, {
id: 2,
age: 20,
top: 8
}]
function pad(num, size) {
var s = num + "";
while (s.length < size) s = "0" + s;
return s;
}
obj.sort((a, b) => pad(a.age, 2) + pad(1000-a.top, 3) > pad(b.age, 2) + pad(1000-b.top, 3)).forEach((i) => {
document.writeln(JSON.stringify(i)+'<br>');
});