84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
认证0级讲师
这个啰嗦的啊...
obj.sort( function(curr,next) { return !!( curr.age-next.age )? curr.age-next.age: curr.top-next.top; } );
这不就好了吗
用自带的就是了
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
在线体验 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>'); });
雷雷
https://jsfiddle.net/sojxjqpf/
谁先升序。
这个啰嗦的啊...
这不就好了吗
用自带的就是了
因为你说的是 top从高到低排序 这种写法是数字越大越在前面
你要是想要越小的话
你修改一下位置就好了 b.top - a.top 改成 a.top - b.top
在线体验 https://jsfiddle.net/hguyjgs8/1/
雷雷
https://jsfiddle.net/sojxjqpf/
谁先
雷雷下一个
雷雷S
谁先升序。
雷雷