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

如何通过对象数组的key匹配目标对象属性,构建指定结构的新对象

错误原因说明

你最初写法报错有两个核心问题:

  • 语法错误:obj.[this.key] 中多了多余的点号,点号属性访问和方括号属性访问不能混用该写法
  • 上下文错误:箭头函数没有独立的this指向,这里的this不指向当前遍历的数组元素item,根本无法获取到对应key值

你修改后的代码合理性

你调整后的写法是完全合理的,是符合现代JS规范的标准实现:

var combined = Object.fromEntries(arr.map(item => [item.value, obj[item.key]]));

该写法逻辑清晰可读性高,直接利用Object.fromEntries把键值对数组转成对象,完全匹配你的需求。


其他可选实现方案

如果有兼容更低版本JS运行环境的需求(比如要支持ES2019之前的环境,Object.fromEntries是ES2019才新增的API),可以使用reduce实现,兼容性更好:

var combined = arr.reduce(function (result, item) {
  result[item.value] = obj[item.key];
  return result;
}, {});

边界情况优化建议

如果存在数组里的key在源对象obj中不存在的场景,可以增加校验逻辑避免生成值为undefined的属性:

// 只保留obj中存在的key
var combined = Object.fromEntries(
  arr
    .filter(item => obj.hasOwnProperty(item.key))
    .map(item => [item.value, obj[item.key]])
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:27:02