如何从对象数组中获取键值对并从该键值对创建一个新对象

时间:2021-04-07 13:00:42

标签: javascript arrays object

我有一个对象数组,我想将其转换为对象,键作为对象键的值数组,值作为对象值的数组。

假设我有一个这样的数组

let arr = [
{name: "abcd", value: "xyz"},
{name: "pqr", value: "uvw"},
....
]

我想像这样从这个数组创建一个对象。

obj = {
abcd: "xyz",
pqr: "uvw",
...
}

我想获取键和值的值并使用它们来创建一个新对象。有没有办法做到这一点。

3 个答案:

答案 0 :(得分:2)

试试这个:

let arr = [
  {name: "abcd", value: "xyz"},
  {name: "pqr", value: "uvw"}
]
const result = {}
arr.forEach((element) => {
  result[element.name] = element.value
})
console.log(result)

答案 1 :(得分:1)

我认为您可以通过两种主要不同的方式轻松实现这一目标:

1. .reduce() 方法

let arr = [
  {name: "abcd", value: "xyz"},
  {name: "pqr", value: "uvw"},
  // ...
];

obj = arr.reduce((a,c) => (a[c.name] = c.value, a), {});

console.log(obj);

2. Object.values() 和 Object.fromEntries() 方法

let arr = [
  {name: "abcd", value: "xyz"},
  {name: "pqr", value: "uvw"},
  // ...
];

obj = Object.fromEntries(arr.map(e => Object.values(e)));

console.log(obj);

答案 2 :(得分:0)

您可以使用 reduce 轻松实现这一目标。 reduce 使用聚合器函数并需要初始值。您可以将初始值作为空对象提供,并提供如下所述的聚合器函数:

const arr = [
  {name: "abcd", value: "xyz"},
  {name: "pqr", value: "uvw"}
];

const result = arr.reduce((a, x) => {
    return {
      ...a,
      [x.name]:x.value
    }
}, {});

console.log(result);