使用对象键值对的数组值将数组转换为对象

时间:2019-05-21 01:11:00

标签: javascript arrays

我有一个数组:

const arr = [ 'name=Jon', 'weapon=sword', 'hair=shaggy' ]

我想将其转换为这样的对象:

const obj = { name: 'Jon', weapon: 'sword', hair: 'shaggy' }

我尝试用=拆分数组以获取keyvalue,然后映射新数组并将这些值发送到空对象,但是没有获取正确的键

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'}

2 个答案:

答案 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)