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

  • 简单升序排列
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即为降序排列,结果如下:

posted @ 2020-11-26 11:06  ZerlinM  阅读(885)  评论(0编辑  收藏  举报