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

如何根据array2对应值更新array1中years对象的键值对?

数组对象years数值批量相减的问题解决

你的代码有两个关键错误导致未生效:

  • Object.entries()返回的是**[键, 值]格式的数组**,不是带.key和.value属性的对象,所以你用keyValuePair.key、keyValuePair.value根本取不到正确值。
  • 你的数据里years对象的属性值直接是数字,不是嵌套对象,所以array2Record.years[keyValuePair.key].value多了个.value,会报错或者取到undefined。

修正后的代码如下:

array1.forEach(r1 => {
    const array2Record = array2.find(r2 => r2.key1 === r1.key1 && r2.key2 === r1.key2);
    // 遍历array1当前项的years所有键值对
    Object.entries(r1.years).forEach(([year, val]) => {
        // 直接修改r1.years对应的年份数值
        r1.years[year] = val - array2Record.years[year];
    });
});

如果不想修改原array1,而是生成一个新数组(更推荐的不可变写法),可以用map:

const updatedArray1 = array1.map(r1 => {
    const array2Record = array2.find(r2 => r2.key1 === r1.key1 && r2.key2 === r1.key2);
    // 复制原对象,避免修改原数据
    return {
        ...r1,
        years: Object.fromEntries(
            Object.entries(r1.years).map(([year, val]) => [
                year,
                val - array2Record.years[year]
            ])
        )
    };
});

运行后,比如A/Fred的2013数值会从16减3得到13,Jim的2013从1减9得到-8,均符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:50:13