对象数组通过对象的属性进行排序
2018-01-17 17:37
357 查看
最常见的对数组进行排序,可以用sort()方法,按照数组中元素的首字母或者数字大小进行排序
sort()方法会改变原来的数组,并且sort方法并不是严格按照数字大小排序的。
如果想对数组按照大小进行排序,则需要在sort()方法添加比较函数
比较函数compare返回值特点:
若a小于b,在排序后的数组中a应该出现在b之前(即升序排列),则返回小于0的值
若a等于b,则返回0
若a大于b,则返回一个大于0的值
像上面对数组按照大小排序,指定比较函数一样,只是此时比较的是对象的属性
上代码:对下列对象数组,按照age排序
最后打印出来的结果如下所示:
这样就完成了对象数组按照对象属性排序啦!! !
var arr = [2,5,13,7,4,9,1]; var arr1 = arr.sort(); console.log(arr); // [1, 13, 2, 4, 5, 7, 9] console.log(arr1); // [1, 13, 2, 4, 5, 7, 9]
sort()方法会改变原来的数组,并且sort方法并不是严格按照数字大小排序的。
如果想对数组按照大小进行排序,则需要在sort()方法添加比较函数
var arr = [2,5,13,7,4,9,1]; arr.sort(function(a,b){ return a-b; // -1 升序排列 }) console.log(arr); // [1, 2, 4, 5, 7, 9, 13]
比较函数compare返回值特点:
若a小于b,在排序后的数组中a应该出现在b之前(即升序排列),则返回小于0的值
若a等于b,则返回0
若a大于b,则返回一个大于0的值
那么可不可以利用sort方法对对象数组按照对象属性进行排序呢?
答案是可以的像上面对数组按照大小排序,指定比较函数一样,只是此时比较的是对象的属性
上代码:对下列对象数组,按照age排序
var infoObj=[ { name:"张三", sex:'female', age:30 }, { name:"李四", sex:'male', age:20 }, { name:"王五", sex:'female', age:40 } ]; // 指定排序的比较函数 function compare(property){ return function(obj1,obj2){ var value1 = obj1[property]; var value2 = obj2[property]; return value1 - value2; // 升序 } } var sortObj = infoObj.sort(compare("age")); console.log(sortObj); //
最后打印出来的结果如下所示:
[ { name:"李四", sex:'male', age:20 }, { name:"张三", sex:'female', age:30 }, { name:"王五", sex:'female', age:40 } ];
这样就完成了对象数组按照对象属性排序啦!! !
相关文章推荐
- 对象数组通过对象的属性进行排序
- 对象数组通过对象的属性进行排序
- 对JavaScript对象数组按指定属性和排序方向进行排序
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个Student类型的对象数组,对学号进行 升序排序并输出。
- JAVA 对象数组按照多个属性进行排序
- 给object数组进行排序(排序条件是每个元素对象的属性个数)
- JavaScript 对象数组,根据某个对象属性进行排序
- js根据数组对象中某属性进行排序
- JavaScript对象数组如何按指定属性和排序方向进行排序
- 给object数组进行排序(排序条件是每个元素对象的属性个数)
- js数组排序,根据数组中对象的某一属性进行排序 支持数字和字符串的排序,也支持按两个属性进行排序
- C#基础:通过委托给任何对象数组进行排序
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个 Student 类型的对象数组,对学号进行 升序排序并输出
- 根据某一属性对数组中的对象进行排序
- 数组排序(按对象中某个属性进行排序)
- 对象数组根据单个属性进行排序
- 根据对象属性对数组进行排序
- 工作问题小结——通过数组的某个属性进行排序
- javascript 数组对象根据指定属性排序
- java list按照元素对象的指定多个字段属性进行排序