cqwcns 发表于 2020-7-31 20:06

JS对对象进行排序的问题

JS,有个数组对象,结构大概是这样的,如果我要根据currtentTime对对象进行排序(降序),怎样写比较好。
我尝试用sort() ,但没有成功。请指教,谢谢


    [{
      content: '内容内容',
      currtentTime: 1596184337513
    }, {
      content: '内容内容',
      currtentTime: 1596994339913
    }, {
      content: '内容内容',
      currtentTime: 1596884377513
    }]

1.shui 发表于 2020-7-31 20:31

sort()和reverse()

fortytwo 发表于 2020-7-31 20:46

a = [{
    content: '内容内容',
    currtentTime: 1
}, {
    content: '内容内容',
    currtentTime: 3
}, {
    content: '内容内容',
    currtentTime: 2
}]
function compare(p){
    return function(m,n){
      var a = m
      var b = n
      return a-b
    }
}
console.log(a.sort(compare('currtentTime')));

1085271662 发表于 2020-7-31 21:33

有啥问题吗

leslie初见 发表于 2020-7-31 21:41


/**根据对象数组中的某个属性值进行排序
* eg: newArr.sort(objSort('number',false))
* @Param attr 排序的属性
* @param rev true表示升序排列,false降序排序
* */
function objSort(attr, rev){
    //第二个参数没有传递 默认升序排列
    if(rev ==undefined)
      rev = 1;
    else
      rev = (rev) ? 1 : -1;

    return function(a, b){
      a = a;
      b = b;
      if(a < b)
            return rev * -1;
      if(a > b)
            return rev * 1;
      return 0;
    };
}

var newArr = [{
content: '内容内容',
currtentTime: 1596184337513
}, {
content: '内容内容',
currtentTime: 1596994339913
}, {
content: '内容内容',
currtentTime: 1596884377513
}];

console.log( newArr.sort(objSort('currtentTime',false)) );

arklearn 发表于 2020-7-31 23:25

leslie初见 发表于 2020-7-31 21:41

/**根据对象数组中的某个属性值进行排序
* eg: newArr.sort(objSort('num ...

学习了,平时用的是框架。

1085271662 发表于 2020-8-3 14:56

let arr = [{ x: 2 }, { x: 1 }, { x: 4 }, { x: 3 }];
console.log(arr.sort((a, b) => a.x - b.x));
页: [1]
查看完整版本: JS对对象进行排序的问题