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

如何向对象添加键值对?数组键值合并到对象的正确方法求助

如何将数组中的键值对添加到对象中?

先帮你梳理下原代码里的问题,再一步步给出正确的实现方式:

原代码的问题

  1. 语法错误:
    • person对象中Name和age属性之间缺少逗号,这会直接导致JS解析报错;
    • address数组里的对象引号不匹配({address: '111 main st"}应该修正为{ address: '111 main st' });
    • forEach的箭头函数语法错误,写成了,==>,正确写法是=>。
  2. 逻辑错误:
    • for (let obj in person)遍历的是person的属性名(比如"Name"、"age",都是字符串),不是对象,所以你尝试给obj[key]赋值完全不成立;
    • 逻辑方向搞反了——你要把address数组里的键值对加到person里,但原代码却在遍历person的属性去操作,而且element.key也不对,address里的对象键是address,不是key。

正确的实现方法

假设你的需求是把address数组中所有对象的键值对都合并到person对象中,这里有两种常用方式:

方式1:直接修改原person对象(使用Object.assign)

先修正基础语法,再用forEach遍历address数组,把每个地址对象的属性合并到person里:

const person = { Name: "John klmeni", age: 29 };
const address = [{ address: '111 main st' }];

// 遍历address数组,合并每个对象的属性到person
address.forEach(addrItem => {
  Object.assign(person, addrItem);
});

console.log(person);
// 输出:{ Name: 'John klmeni', age: 29, address: '111 main st' }

方式2:返回新对象,不修改原person(使用展开运算符)

如果你不想改动原有的person对象,可以用展开运算符结合reduce生成一个新的合并对象:

const person = { Name: "John klmeni", age: 29 };
const address = [{ address: '111 main st' }];

const updatedPerson = address.reduce((result, addrItem) => {
  return { ...result, ...addrItem };
}, person);

console.log(updatedPerson);
// 输出合并后的新对象,原person保持不变

如果address数组里有多个地址对象,这两种方式都会把所有对象的属性依次合并到目标对象中(后面的属性会覆盖前面同名的属性)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:03