javascript - 将键值对数组转换为一个对象
问题描述
如何将以下键值对数组转换为一个对象。
arr = [ { '/a': { component: [Function] },
'/a/1': { component: [Function] },
'/a/2': { component: [Function] },
'/a/2/1': { component: [Function] },
'/ab/2/1': { component: [Function] },
'/b/1': { component: [Function] },
'/b/login/register': { component: [Function] } },
{ '/ac': { component: [Function] },
'/a/1': { component: [Function] } },
]
将上述对象转换为
obj = { '/a': { component: [Function] },
'/a/1': { component: [Function] },
'/a/2': { component: [Function] },
'/a/2/1': { component: [Function] },
'/ab/2/1': { component: [Function] },
'/b/1': { component: [Function] },
'/b/login/register': { component: [Function] } }
更新
当存在重复键时,我们喜欢在将数组对象合并为对象时记录警告。
解决方案
const obj = {};
for(let row of arr) {
for(let key in row) {
if(key === 'component') {
continue
}
if(obj[key]) {
console.warn('duplicate key', key)
}
obj[key] = row[key]
}
}
console.log(obj)