搜索

首页  >  问答  >  正文

javascript - js先按照age排序 age相同再按照top排序

雷雷
PHP中文网PHP中文网2742 天前1224

全部回复(5)我来回复

  • 扔个三星炸死你

    扔个三星炸死你2017-07-07 10:36:15

    这个啰嗦的啊...

    obj.sort( function(curr,next) {
        return !!( curr.age-next.age )? curr.age-next.age: curr.top-next.top;
    } );

    这不就好了吗

    回复
    0
  • phpcn_u1582

    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

    回复
    0
  • 習慣沉默

    習慣沉默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>');
    });

    回复
    0
  • 三叔

    三叔2017-07-07 10:36:15

    雷雷

    https://jsfiddle.net/sojxjqpf/

    回复
    0
  • 漂亮男人

    漂亮男人2017-07-07 10:36:15

    谁先

    雷雷

    下一个

    雷雷

    S

    谁先升序。

    雷雷

    回复
    0
  • 取消回复