首頁  >  問答  >  主體

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

雷雷
PHP中文网PHP中文网2661 天前1163

全部回覆(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
  • 取消回覆