javascript - JavaScript:按每个对象中的数字属性对对象数组进行排序
问题描述
我很难理解如何使用 array.sort() 方法根据在每个对象中找到的数值对对象数组进行排序。基本上我有以下形式的场景:
var myarray = []
myarray.push({name: "alex", age: 8})
myarray.push({name: "ben", age: 57})
myarray.push({name: "dan", age: 32})
结果的初始顺序是“alex, ben, dan”。现在我想按年龄对这个数组进行排序,所以最老的人排在第一位。排序后的顺序应该是“ben, dan, alex”。我如何以最简单的方式实现这一目标?
解决方案
var myarray = []
myarray.push({name: "alex", age: 8})
myarray.push({name: "ben", age: 57})
myarray.push({name: "dan", age: 32});
var res = myarray.sort(({age:a}, {age:b}) => b-a);
console.log(res);
或者,如果您对破坏感到不舒服,您可以使用常规点符号来访问该age
属性:
var myarray = []
myarray.push({name: "alex", age: 8})
myarray.push({name: "ben", age: 57})
myarray.push({name: "dan", age: 32});
var res = myarray.sort((a, b) => b.age-a.age);
console.log(res);
工作方式.sort
由您从传入的回调函数返回的内容定义。如果您返回:
<= -1
然后a
会来之前b
。0
然后保持a
和b
在相同的位置>= 1
然后b
会来之前a
因此,通过计算两个年龄之间的差异,这个“自然”给出了正确的值来正确排序你的数组。
推荐阅读
- java - 如何随机给学生设置课程?
- python - 使用所有列重新采样多维数据系列
- python - Python 从具有多个数据的函数中获取特定值
- excel - 如何使用 Excel 公式将两列值与另外两列匹配
- mysql - 在 mysql 中使用 CASE 函数但出现错误代码:1241 时出现问题。操作数应包含 1 列
- reactjs - oauth2 客户端凭据流 Cors 问题
- assembly - 我如何在 NASM x86 中定义宏
- r - 当文本具有不同数量的字符时,右对齐 y 轴文本
- python - 删除空白行后如何获取更新的csv文件?
- python - 我想通过 Boost.python 用 OpenCV 编译一个 C++ 程序以在 python 脚本中使用