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

如何生成满足值非零、总和小于10要求的对象键值对数组

完全可以用reduce实现,你可以在累计过程中同时跟踪当前选中项的总和,逻辑如下:

实现代码

const obj = {
  a: 5,
  b: 3,
  c: 0,
  d: 9
}

const getFilteredArr = (targetObj) => {
  return Object.entries(targetObj).reduce((acc, [key, value]) => {
    // 先过滤值为0的项
    if (value === 0) return acc
    // 计算加入当前项后的总和
    const newSum = acc.sum + value
    // 总和小于10才加入结果
    if (newSum < 10) {
      acc.result.push([key, value])
      acc.sum = newSum
    }
    return acc
  // 初始值同时存结果数组和累计总和
  }, { result: [], sum: 0 }).result
}

const arr = getFilteredArr(obj)
console.log(arr) // 输出 [['a', 5], ['b', 3]]

逻辑说明

  • reduce初始值设置为包含结果数组result和累计和sum的对象,同步跟踪两个状态
  • 遍历每一项时先跳过值为0的项
  • 校验加入当前项后的总和是否小于10,符合要求就将键值对推入结果数组,同时更新累计和
  • 最终提取累计对象中的result字段就是需要的结果

如果需要调整选中优先级,修改Object.entries返回的数组顺序即可。

内容的提问来源于stack exchange,提问作者karo-s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:03