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

如何将数组值按索引匹配添加到另一数组的每个对象中?

问题分析与修正

代码错误原因

你的代码用了两层嵌套的forEach循环,这会让closed_status里的每个对象,都和str数组里的所有元素逐一组合,最终生成closed_status.length * str.length个对象(也就是3×3=9个),这就是冗余数据的来源。

你需要的是按数组索引一一匹配,即closed_status[0]对应str[0]、closed_status[1]对应str[1],以此类推,所以不能用嵌套循环,要利用数组的索引来关联两个数组的元素。

另外原代码里的project_Status: closed存在语法错误,键和字符串值都需要用引号包裹,正确写法是"project_Status": "closed",否则会导致代码无法正常运行。

修正后的代码

方案1:带索引的forEach实现

const closed_status = [{
    "project_no": 5,
    "priority": 3,
    "s_status": "S8",
    "project_Status": "closed"
  },
  {
    "project_no": 8,
    "priority": 1,
    "s_status": "S5",
    "project_Status": "closed"
  },
  {
    "project_no": 12,
    "priority": 2,
    "s_status": "S2",
    "project_Status": "closed"
  }
];
const str = [
  "Value 1",
  "Value 2",
  "Value 3",
];

let result = [];
closed_status.forEach((obj, index) => {
  // 按索引匹配元素,同时处理两个数组长度不一致的情况
  const newValue = index < str.length ? str[index] : null;
  result.push({ ...obj, newValue });
});

方案2:map方法实现(更简洁)

map方法天生适合这种“将原数组每个元素转换为新元素”的场景,代码更紧凑:

const closed_status = [{
    "project_no": 5,
    "priority": 3,
    "s_status": "S8",
    "project_Status": "closed"
  },
  {
    "project_no": 8,
    "priority": 1,
    "s_status": "S5",
    "project_Status": "closed"
  },
  {
    "project_no": 12,
    "priority": 2,
    "s_status": "S2",
    "project_Status": "closed"
  }
];
const str = [
  "Value 1",
  "Value 2",
  "Value 3",
];

const result = closed_status.map((obj, index) => ({
  ...obj,
  newValue: index < str.length ? str[index] : null
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:52:02