JavaScript 高阶函数 sort对象传入指定 值排序

时间:2022-09-29 04:18:15

JavaScript 高阶函数 sort对象传入指定 值排序

JavaScript 高阶函数 sort对象传入指定 值排序
JavaScript 高阶函数 sort对象传入指定 值排序

  var persons= [
    { name:'john',age:23},
    { name:'Ada' ,age:41},
    { name:'zoo' ,age:3},
    { name:'Lemo',age:39}
  ]
//这种显然不太灵活
  function sortByname(obj1, obj2) {
    if(obj1.name > obj2.name){
      return 1;
    }else if (obj1.name == obj2.name){
      return 0;
    }else {
      return -1;
    }
  }
  //这种显然不太灵活
  function sortByage(obj1, obj2) {
    if(obj1.age > obj2.age){
      return 1;
    }else if (obj1.age == obj2.age){
      return 0;
    }else {
      return -1;
    }
  }
  //改进写法
  function sortByproperty(properyName) {
    var sortFun = function (obj1, obj2) {
      if(obj1[properyName] > obj2[properyName]){
        return 1;
      }else if (obj1[properyName] == obj2[properyName]){
        return 0;
      }else {
        return -1;
      }
    }
    //这里注意返回是函数
    return sortFun
  }
  persons.sort(sortByproperty('age'))//现在按传入的排序

  for (var i = 0; i < persons.length; i++) {
    console.log(persons[i]);
  }

JavaScript 高阶函数 sort对象传入指定 值排序