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

如何用另一数组的值更新数组指定字段(JavaScript)

解决方案

你当前的代码逻辑其实没问题,但存在两个可以优化的点:一是每次遍历都调用find会重复查找,效率不高;二是如果array2里不存在某个Name,会导致bla为undefined,访问bla.col2会报错。

因为你提到array2里同一Name对应的col2值都一致,我们可以先把array2转换成一个Name到col2值的映射对象,这样后续更新时直接取值就行,不用反复查找:

// 先构建Name和col2的映射
const nameToCol2 = {};
array2.forEach(item => {
  // 同一Name值相同,直接覆盖也不影响结果
  nameToCol2[item.Name] = item.col2;
});

// 遍历array1更新col3
array1.forEach(item => {
  // 先判断映射里存在该Name再赋值,避免报错
  if (nameToCol2.hasOwnProperty(item.Name)) {
    item.col3 = nameToCol2[item.Name];
  }
  // 若需要处理无匹配Name的情况,可添加else逻辑,比如保留原col3或设默认值
  // else {
  //   item.col3 = item.col3 || 0;
  // }
});

如果你想沿用自己最初的写法,只需加个判断避免报错即可:

array1.forEach((x) => {
  const bla = array2.find((y) => y.Name === x.Name);
  // 确认找到对应项后再赋值
  if (bla) {
    x.col3 = bla.col2;
  }
});

另外注意你代码里的引号是中文的‘’,实际运行时要改成英文的''或"",否则会触发语法错误。比如把{ Name: ‘Bart’, ... }改成{ Name: 'Bart', ... }。

内容的提问来源于stack exchange,提问作者Peter Double U

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:15:34