当前位置: 首页 > 编程笔记 >

JS sort方法基于数组对象属性值排序

须衡虑
2023-03-14
本文向大家介绍JS sort方法基于数组对象属性值排序,包括了JS sort方法基于数组对象属性值排序的使用技巧和注意事项,需要的朋友参考一下

sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同.

var arr = [
  {name:'zopp',age:0},
  {name:'gpp',age:18},
  {name:'yjj',age:8}
];

function compare(property){
  return function(a,b){
    var value1 = a[property];
    var value2 = b[property];
    return value1 - value2;
  }
}
console.log(arr.sort(compare('age')))

如何根据参数不同,来确定是升序排列,还是降序排序呢?

/**数组根据数组对象中的某个属性值进行排序的方法 
   * 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
   * @param attr 排序的属性 如number属性
   * @param rev true表示升序排列,false降序排序
   * */
  sortBy: function(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;
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 例如,我有以下数据集: 我需要根据数组中的条件对数组进行排序。我最终得出了这样的解决方案: 但我无法理解如何使用数组而不是硬编码的和属性。数组可以有许多属性。

  • 我试图对包含大约100个大型实体(几乎有30个键)的对象数组进行排序,其基础是key的值,这些值深深嵌套在一个对象中,为此我使用了Lodash的orderBy方法: *考虑sortOrder为desc或asec 但排序过程所花费的时间相当长。我们可以使用哪种更好的方法来将键深埋在对象中对对象数组进行排序? 示例数据(考虑这样的50个条目至少有40个键)

  • 我有一个具有以下结构的对象数组: 我希望输出为: 因为这两个都检查了。 我已尝试根据选中值筛选出: 我正在获取已选中属性值设置为。 我们将不胜感激。

  • 问题内容: 我已经使用AJAX获得了以下对象并将它们存储在数组中: 如何仅使用JavaScript 创建一个函数以按属性 升序 或 降序 对对象进行排序? 问题答案: 按价格升序对房屋进行排序: 或在ES6版本之后:

  • 我有一个JavaScript对象数组: 如何在JavaScript中按照的值对它们进行排序? 我知道,但它似乎只适用于字符串和数字。是否需要向对象添加方法?

  • 问题内容: 我正在寻找一种基于布尔值对Swift数组进行排序的方法。 我已经使用强制转换为NSArray来工作了: 但是我在寻找Swift变体,有什么想法吗? 更新 感谢Arkku,我设法使用以下代码修复了此问题: 问题答案: 斯威夫特的阵列可以在适当的位置进行排序或用新的阵列。这两个函数的单个参数都是一个闭合,该闭合带有两个元素,如果第一个元素在第二个元素之前被排序,则返回。使用闭包的参数的最短