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

如何在JavaScript对象数组中获取首个最高saving值的对象?

如何找到数组中'saving'值最高的第一个对象?

我有一个对象数组,想要找到键为'saving'的最高值对应的对象。最开始用了这段代码:

maxSaving = tableResults.reduce((prev, current)=> ( (prev.saving > current.saving) ? prev : current),0) 

这段代码能返回最高值对应的对象,但有个问题:当存在多个相同的最高值时,它总是返回最后一个实例,而我需要第一个实例。我尝试修改代码但没效果:

maxSaving = tableResults.reduce((prev, current)=> ( (prev.saving > current.saving && prev.saving != current.saving) ? prev : current),0) 

解决方法

核心问题是原来的逻辑在saving值相等时会替换成当前对象,导致最后一个相等值被保留。只需调整判断逻辑,仅当当前对象的saving严格大于之前的最大值时才替换,相等时保留之前的对象即可。另外建议把初始值换成数组的第一个元素,避免初始值为0可能带来的类型问题(比如0没有saving属性,若数组中saving为负数会出错)。

修改后的代码:

maxSaving = tableResults.reduce((prev, current) => {
  return current.saving > prev.saving ? current : prev;
}, tableResults[0]);

原错误代码分析

你修改后的条件prev.saving > current.saving && prev.saving != current.saving其实和prev.saving > current.saving完全等价——当prev.saving大于current.saving时,两者自然不相等,所以逻辑没有变化,还是会在值相等时替换成当前对象,因此无法解决问题。

内容的提问来源于stack exchange,提问作者Johnny John Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:17:06