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

ES6操作对象数组:合并APTC相关键值解决push未定义报错问题

问题报错原因&修复方案

原有代码核心错误点

  • 变量名不匹配:reduce回调参数定义的是accValue(累加对象)、currValue(当前遍历的键),但代码里误用了未定义的key、acc变量,直接导致取值逻辑混乱
  • push.apply用法错误:apply的第一个参数必须是调用push的数组本身,第二个参数才是要追加的元素数组
  • 逻辑缺失:处理APTC/CSR键时,只做了往APTC追加的逻辑,没有同步给CSR键追加对应值,不符合需求
  • 类型错误:APTC对应值是数组,原有代码里错误赋值为对象{}
  • 多余逻辑:没必要先对原始对象的键排序再处理,增加无意义开销

正确实现代码

const result = Object.entries(eligibilityGroupingMap).reduce((acc, [key, value]) => {
  // 非目标键直接存入结果
  if (key !== 'APTC/IndianEligibility2' && key !== 'APTC/CSR') {
    acc[key] = value;
    return acc;
  }

  // 两个目标键的值都追加到APTC
  if (!acc.APTC) acc.APTC = [];
  acc.APTC.push(...value);

  // 处理APTC/CSR时同步追加到CSR
  if (key === 'APTC/CSR') {
    if (!acc.CSR) acc.CSR = [];
    acc.CSR.push(...value);
  }

  return acc;
}, {});

// 若需要对每个分组的数组排序可以补充以下逻辑
Object.values(result).forEach(arr => arr.sort());

console.log(result);

运行结果

代入原始数据运行后输出完全符合期望:

{
  CHIP: [ 'CHILD3', 'CHILD4' ],
  APTC: [ 'SELF1', 'SPOUSE2', 'CHILD4' ],
  Ineligible: [ 'CHILD7' ],
  CSR: [ 'CHILD4' ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:05