我想使用对象数组中的键值对动态创建对象。该怎么办?
const arr= [
{key: 'a', value: '1'},
{key: 'b', value: '2'},
{key: 'c', value: '3'},
];
结果应如下所示:
const obj = {
a: '1',
b: '2',
c: '3',
};
答案 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;
}