You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ES6/JS从对象数组中获取价格最高的3个对象组成新数组

实现方案

核心逻辑非常简单:先对数组按价格降序排序,再截取前3个元素即可,注意要先拷贝原数组避免sort方法的原地修改污染原数据。

完整可运行代码

const data = 
  [ { name: 'x', color: 'red',    price: 15 } 
  , { name: 'y', color: 'black',  price:  5 } 
  , { name: 'z', color: 'yellow', price: 25 } 
  , { name: 't', color: 'blue',   price: 10 } 
  , { name: 'n', color: 'blue',   price: 60 } 
  ]

// 核心实现代码
const top3 = [...data].sort((a, b) => b.price - a.price).slice(0, 3)

console.log(top3)

输出结果

[
  { name: 'n', color: 'blue', price: 60 },
  { name: 'z', color: 'yellow', price: 25 },
  { name: 'x', color: 'red', price: 15 }
]

步骤说明

  • 用[...data]对原数组做浅拷贝,避免修改原始数据,如果你不需要保留原数组的原始顺序,可以省略拷贝直接写data.sort(...)
  • sort((a, b) => b.price - a.price) 实现按price从高到低降序排序
  • slice(0, 3) 截取排序后的前3个元素,生成新数组返回

特殊情况说明

如果存在多个对象价格相同的情况,该方法默认按原数组出现顺序排序,若需要自定义并列场景的排序规则,只需调整sort内的回调函数即可。

内容的提问来源于stack exchange,提问作者fatihcan8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:48:03