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

JavaScript如何跳过vendorBidId为null项查找对象数组bidAmount最小值

正确实现代码

方案1:先过滤再计算(推荐,可读性更高)

先筛选出所有vendorBidId不为null的有效项,再计算bidAmount最小值:

// 筛选有效投标项
const validBids = event.filter(item => item.vendorBidId !== null);

// 仅需要最小bidAmount数值时使用
const minBidAmount = validBids.reduce((minVal, current) => {
  return current.bidAmount < minVal ? current.bidAmount : minVal;
}, Infinity);

// 需要获取最小bid对应的完整对象时使用
const minBidItem = validBids.reduce((minItem, current) => {
  return current.bidAmount < minItem.bidAmount ? current : minItem;
}, validBids[0] || {});

方案2:单轮reduce同时完成过滤和计算

不需要额外生成过滤后的数组,性能更优:

const minBidAmount = event.reduce((minVal, current) => {
  // 跳过vendorBidId为null的无效项
  if (current.vendorBidId === null) return minVal;
  return current.bidAmount < minVal ? current.bidAmount : minVal;
}, Infinity);

原有代码错误原因

  1. 未过滤vendorBidId为null的项,会将这些项的bidAmount=0纳入比较,得到错误的最小值0
  2. 未给reduce设置初始值,当数组为空或无符合条件的有效项时,会直接抛出类型错误

用你提供的测试数据运行上述代码,最终得到的最小bidAmount为10000,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:06:04