如何使用键值对将对象数组转换为对象

dar*_*rsh 3 javascript arrays object typescript

我想在javascript中使用键值对将对象数组转换为对象.

var arr=[{"name1":"value1"},{"name2":"value2"},...}];
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它转换为像这样的对象

{"name1":"value1","name2":"value2",...}
Run Code Online (Sandbox Code Playgroud)

我希望它能在大多数浏览器中得到支持.

Nin*_*olz 17

您可以使用Object.assign扩展语法...来创建具有对象的给定数组的单个对象.

var array = [{ name1: "value1" }, { name2: "value2" }],
    object = Object.assign({}, ...array);
    
console.log(object);
Run Code Online (Sandbox Code Playgroud)


Ben*_*ees 7

您可以对数组运行reduce 并返回一个新对象。但重要的是要记住,如果属性相同,它们将被覆盖。

const newObject = array.reduce((current, next) => {
  return { ...current, ...next};
}, {})
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 es5 而不是 es6:

var newObject = array.reduce(function(current, next){
  return Object.assign({}, current, next);
}, {})
Run Code Online (Sandbox Code Playgroud)


cus*_*der 5

使用现代 JS (YMMV):

  1. 将每个对象拆分为条目
  2. 将所有条目聚合到一个对象中

const arr = [{name1:"value1"}, {name2:"value2"}, {a:1,b:2}];
const obj = Object.fromEntries(arr.flatMap(Object.entries));
console.log(obj);
Run Code Online (Sandbox Code Playgroud)