我有一个数组:
const arr = [ 'name=Jon', 'weapon=sword', 'hair=shaggy' ]
我想将其转换为这样的对象:
const obj = { name: 'Jon', weapon: 'sword', hair: 'shaggy' }
我尝试用=
拆分数组以获取key
和value
,然后映射新数组并将这些值发送到空对象,但是没有获取正确的键
const split = arr.map( el => el.split('=') )
let obj = {};
split.map( el => {
const key = el[0];
const val = el[1];
obj.key = val;
}
)
obj
返回为{key: 'shaggy'}
答案 0 :(得分:4)
通常,要将数组转换为对象,最适合使用的方法是.reduce
:
const arr = [ 'name=Jon', 'weapon=sword', 'hair=shaggy' ];
const obj = arr.reduce((a, str) => {
const [key, val] = str.split('=');
a[key] = val;
return a;
}, {});
console.log(obj);
仅在需要通过对旧数组中的每个项目执行操作来创建新数组的情况下才应使用.map
,而不是这种情况。
答案 1 :(得分:3)
您可以使用Object.fromEntries
const arr = [ 'name=Jon', 'weapon=sword', 'hair=shaggy' ]
const obj = Object.fromEntries(arr.map(v => v.split('=')))
console.log(obj)