如何按revenue字段对JavaScript对象数组进行降序排序?
按对象数组指定字段降序排序的解决方案
JavaScript数组的sort()方法可以直接处理多属性对象数组的排序,核心是给sort()传入自定义比较函数来定义排序规则。针对你的需求,具体实现如下:
const arr = [{name:"apple", qtySold: 30, revenue: 90}, {name:"pie", qtySold: 10, revenue: 100}, {name:"beer", qtySold: 25, revenue: 95}]; // 按revenue字段降序排序 const sortedArr = arr.sort((a, b) => b.revenue - a.revenue); console.log(sortedArr); // 输出结果: // [{name:"pie", qtySold: 10, revenue: 100}, {name:"beer", qtySold: 25, revenue: 95}, {name:"apple", qtySold: 30, revenue: 90}]
关键逻辑说明:
sort()的比较函数接收两个参数a和b,对应数组中一对待比较的对象。- 返回值的正负决定排序顺序:返回正数时,
b排在a前面;返回负数时,a排在b前面;返回0则保持原顺序。 b.revenue - a.revenue的计算逻辑刚好满足降序需求:若b的营收更高,差值为正,b优先排列;反之则a靠前。
如果需要升序排序,只需把比较逻辑改为a.revenue - b.revenue即可。另外注意,sort()会直接修改原数组,若想保留原数组,可先复制一份再排序:
// 用扩展运算符复制数组 const sortedArr = [...arr].sort((a, b) => b.revenue - a.revenue); // 或用Array.from()复制 const sortedArr = Array.from(arr).sort((a, b) => b.revenue - a.revenue);
内容的提问来源于stack exchange,提问作者Aidenhsy
相关产品推荐
相关产品推荐

