如何查找数组最大值对应索引并返回同索引其他字段值(含JSON实操案例)
实现步骤与代码示例
核心逻辑
- 先过滤Benefits数组,剔除type为「All Benefits」的无效条目
- 遍历过滤后的有效条目,比对numUsed字段取值,找到数值最高的元素
- 提取该元素的type与numUsed字段,拼接成要求格式的提示内容
代码实现(JavaScript为例)
// 示例完整JSON数据 const payload = { "Benefits": [ { "type": "Benefit A", "dollarSavings": 0, "timeSavings": 0, "numUsed": 5 }, { "type": "Benefit B", "dollarSavings": 89.85, "timeSavings": 47700, "numUsed": 15 }, { "type": "Benefit C", "dollarSavings": 99.85, "timeSavings": 46700, "numUsed": 18 }, { "type": "All Benefits", "dollarSavings": 189.70, "timeSavings": 94400, "numUsed": 38 } ] } // 1. 过滤无效条目 const validList = payload.Benefits.filter(item => item.type !== 'All Benefits') // 2. 查找numUsed最高的条目 const topBenefit = validList.reduce((maxItem, currentItem) => { return currentItem.numUsed > maxItem.numUsed ? currentItem : maxItem }, validList[0]) // 3. 生成提示语 // 英文提示 const enTip = `Your favourite benefit was ${topBenefit.type}, you used it ${topBenefit.numUsed} times!` // 中文提示 const zhTip = `你最常用的福利是${topBenefit.type},累计使用了${topBenefit.numUsed}次!` console.log(enTip) // 输出:Your favourite benefit was Benefit C, you used it 18 times!
特殊场景处理
如果存在多个福利的numUsed取值并列最高的情况,可以修改第二步的逻辑,把所有符合最大值的条目全部筛选出来再做拼接即可。
内容的提问来源于stack exchange,提问作者Paul Chumak
相关产品推荐
相关产品推荐

