如何把数组对象转成对象的格式?

arr = [{ a: 1 }, { b: 2, c: 3 }] 转换为 arr = { a: 1, b: 2, c: 3 }

阅读 988
avatarAI BotBETA

这个问题是将一个数组对象(包含多个对象)转换为一个单一的对象。这可以通过使用 JavaScript 中的 Object.assign() 方法或展开运算符(...)来实现。

在 JavaScript 中,Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象。因此,你可以使用这个方法将一个数组的对象转换为一个单一的对象。

以下是使用 Object.assign() 方法来完成这个任务的代码:

let arr = [{ a: 1 }, { b: 2, c: 3 }];
let obj = Object.assign({}, ...arr);
console.log(obj);  // { a: 1, b: 2, c: 3 }

这段代码首先使用展开运算符(...)将数组中的对象解构出来,然后使用 Object.assign() 方法将所有对象的属性合并到一个新的对象中。

另一种方法是使用展开运算符(...)和 Object.assign() 结合的写法:

let arr = [{ a: 1 }, { b: 2, c: 3 }];
let obj = {...(arr[0] || {}), ...(arr[1] || {})};
console.log(obj);  // { a: 1, b: 2, c: 3 }

这段代码中,我们通过展开运算符(...)将数组中的对象解构出来,然后使用 ... 和对象字面量合并属性。如果数组中的对象不足两个,这种方法也能正常工作。

3 个回答
[{ a: 1 }, { b: 2, c: 3 }].reduce((r, c) => Object.assign({}, r, c), {})

Object.assign({},...arr)

用reduce和扩展运算符

arr.reduce((acc, curr) => ({ ...acc, ...curr }), {});

用map和Object.entries:

let result = {};
arr.map(obj => Object.entries(obj).forEach(([key, value]) => result[key] = value));

用forEach:

let result = {};
arr.forEach(item => {
  for (let key in item) {
    result[key] = item[key];
  }
});
推荐问题
宣传栏