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

基于Array#reduce如何查找符合最高a+b及最高c优先级条件的数组对象

实现思路

  • reduce的累加器用来存储当前遍历到的符合优先级规则的最优对象
  • 每轮遍历分别计算当前元素和累加器中对象的a+b总和,按优先级规则对比:
    1. 当前元素a+b总和更高:直接替换累加器为当前元素
    2. 两者a+b总和相等:对比c值,当前元素c更高则替换累加器
    3. 其余情况保持原有累加器不变
  • 初始值设为null兼容空数组场景,避免数组为空时报错

实现代码

const getTopPriorityItem = (arr) => {
  return arr.reduce((best, current) => {
    // 初始状态直接取第一个元素
    if (!best) return current;
    const bestSum = best.a + best.b;
    const currentSum = current.a + current.b;
    // 优先对比a+b总和
    if (currentSum > bestSum) return current;
    // 总和相等对比c值
    if (currentSum === bestSum && current.c > best.c) return current;
    // 其余情况保留原有最优项
    return best;
  }, null);
};

// 测试示例
const data = [
  { id: 1, a: 12, b: 75, c: 11 },
  { id: 2, a: 65, b: 14, c: 32 },
  { id: 3, a: 32, b: 23, c: 45 },
  { id: 4, a: 22, b: 1, c: 3 },
];

console.log(getTopPriorityItem(data)); 
// 输出:{ id: 1, a: 12, b: 75, c: 11 }

方案优势

  • 时间复杂度为O(n),只需要遍历数组一次,比先排序再取首项的O(nlogn)性能更好
  • 没有额外的中间数组生成,内存占用更低
  • 逻辑清晰直观,符合优先级判断的思维路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:15:03