如何从对象数组中提取return值最高的前5个对象并排序
提取数组中return值最高的前5个对象并排序
可以通过排序+截取的两步操作实现需求,具体代码如下:
const Top5ReturnsArray = [ { signalInfo: { signalName: 'Signal 1'}, return: 3.0 }, { signalInfo: { signalName: 'Signal 2'}, return: 1.4 }, { signalInfo: { signalName: 'Signal 3'}, return: -2.6 }, { signalInfo: { signalName: 'Signal 4'}, return: -4.5 }, { signalInfo: { signalName: 'Signal 4'}, return: 4.0 }, { signalInfo: { signalName: 'Signal 5'}, return: 2.3 }, { signalInfo: { signalName: 'Signal 6'}, return: -7.3 }, { signalInfo: { signalName: 'Signal 7'}, return: 3.5 }, { signalInfo: { signalName: 'Signal 8'}, return: -0.4 }, { signalInfo: { signalName: 'Signal 9'}, return: -0.8 }, { signalInfo: { signalName: 'Signal 10'}, return: -1.0 } ]; // 处理逻辑 const top5HighestReturns = [...Top5ReturnsArray] .sort((a, b) => b['return'] - a['return']) .slice(0, 5); console.log(top5HighestReturns);
关键步骤说明
- 复制原数组:用
[...Top5ReturnsArray]创建原数组的浅拷贝,避免sort方法的原地排序修改原数组 - 降序排序:
sort回调中用b['return'] - a['return']实现按return值从高到低排序;由于return是JS关键字,用方括号访问属性避免语法错误 - 截取前5个:
slice(0,5)从排序后的数组中提取前5个元素,得到目标结果
输出结果
运行后会得到按return值降序排列的前5个对象:
[ { signalInfo: { signalName: 'Signal 4' }, return: 4.0 }, { signalInfo: { signalName: 'Signal 7' }, return: 3.5 }, { signalInfo: { signalName: 'Signal 1' }, return: 3.0 }, { signalInfo: { signalName: 'Signal 5' }, return: 2.3 }, { signalInfo: { signalName: 'Signal 2' }, return: 1.4 } ]
内容的提问来源于stack exchange,提问作者iandev
相关产品推荐
相关产品推荐

