javascript - js先按照age排序 age相同再按照top排序
PHP中文网
PHP中文网 2017-07-07 10:34:15
[JavaScript讨论组]
var obj = [{
        id : 1,
        age : 20,
            top :5
    },{
        id : 3,
        age : 21,
            top : 6
    },{
        id : 2,
        age : 20,
            top : 8
    }]
  function keysort(property) {
      return function(a, b) {
          var value1 = a[property] == '-' ? 0 : a[property];
          var value2 = b[property] == '-' ? 0 : b[property];
           return value1 - value2;
      }
  }
  var obj1 = obj.sort(keysort('age'));
写一半 不会写了  age相同的情况下  再按照top从高到低排序  想请教下老司机 
PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
扔个三星炸死你

这个啰嗦的啊...

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

这不就好了吗

phpcn_u1582

用自带的就是了

    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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号