循环数组时如何动态创建对象?

时间:2018-11-02 15:55:01

标签: javascript

我想使用对象数组中的键值对动态创建对象。该怎么办?

const arr= [
  {key: 'a', value: '1'},
  {key: 'b', value: '2'},
  {key: 'c', value: '3'},
];

结果应如下所示:

const obj = {
  a: '1',
  b: '2',
  c: '3',
};

6 个答案:

答案 0 :(得分:4)

我会为此使用reduce function

agg是汇总我们最终结果的汇总器。

item代表数组中的每个元素。

const arr= [
  {key: 'a', value: '1'},
  {key: 'b', value: '2'},
  {key: 'c', value: '3'},
];

const result = arr.reduce((agg, item) => {
  agg[item.key] = item.value
  return agg
}, {})
console.log(result)
// { a: '1', b: '2', c: '3' }

  

reduce()方法在数组的每个成员上执行reducer函数(由您提供),从而产生单个输出值。

答案 1 :(得分:3)

简单的forEach就可以完成工作

const arr= [
  {key: 'a', value: '1'},
  {key: 'b', value: '2'},
  {key: 'c', value: '3'},
];
const obj = {};
arr.forEach(v=>{
 obj[v.key] = v.value;
});
console.log(obj);

答案 2 :(得分:2)

非常容易,可能是重复的。

const arr= [
  {key: 'a', value: '1'},
  {key: 'b', value: '2'},
  {key: 'c', value: '3'},
];
const obj = {};

for (let i = 0; i < arr.length; ++i) {
  obj[arr[i].key] = arr[i].value 
}

console.log(obj);

答案 3 :(得分:2)

function parse(input){
    return input.reduce(function(o,i){
        o[i.key] = i.value;
        return o;
    },{});
}

答案 4 :(得分:1)

使用Array.forEach()the square brackets syntax设置新对象的属性。

const arr = [
  {key: 'a', value: '1'},
  {key: 'b', value: '2'},
  {key: 'c', value: '3'},
];

const obj = {};
arr.forEach(({key, value}) => obj[key] = value);

console.log(obj);

答案 5 :(得分:0)

您可以简单地创建一个空对象,然后在迭代数组时动态创建新属性。

let obj = {};
for(let i = 0; i < arr.length; i++) {
    obj[arr[i].key] = obj[i].value;
}