首页 > 编程语言 > 详细

JS实现根据数组对象的某一属性排序

时间:2020-11-26 13:39:44      阅读:17      评论:0      收藏:0      [点我收藏+]
  • 简单升序排列
var list = [
  { name: "jack", age: 14 },
  { name: "lily", age: 10 },
  { name: "king", age: 13 },
]
function orderList(attr) {
  return function (a, b) {
    return a[attr] - b[attr]
  }
}
list.sort(orderList("age"));
console.log(list);

attr 为要排序的属性
得到结果:
技术分享图片

  • 根据某个属性值升序还是降序排列
/**数组根据数组对象中的某个属性值进行排序的方法 
   * 使用例子:newArray.sort(orderList(‘age‘,false)) //表示根据age属性降序排列;若第二个参数不传递,默认表示升序排序
   * @param attr 排序的属性 如age属性
   * @param rev true表示升序排列,false降序排序
   * */
function orderList(attr, rev) {
  //第二个参数没有传递 默认升序排列
  if (rev == undefined) {
    rev = 1;
  } else {
    rev = (rev) ? 1 : -1;
  }
  return function (a, b) {
    a = a[attr];
    b = b[attr];
    if (a < b) {
      return rev * -1;
    }
    if (a > b) {
      return rev * 1;
    }
    return 0;
  }
}
list.sort(orderList("age", false));  
console.log(list);

如上第二个参数为false即为降序排列,结果如下:
技术分享图片

JS实现根据数组对象的某一属性排序

原文:https://www.cnblogs.com/ZerlinM/p/14041235.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!