如何使用 forEach 将嵌套数组转换为对象?

问题描述

我可以使用 for 循环来实现这一点,但我不知道如何使用 forEach 来做同样的事情。

例如: var input = [['make','Ford'],['model','Mustang'],['year',1964]]; 调用函数应导致:

{
  make : 'Ford',model : 'Mustang',year : 1964
}

解决方法

我们可以使用 forEach 和 Array destructuring

var input = [
  ["make","Ford"],["model","Mustang"],["year",1964],];

const result = {};

input.forEach(([prop,value]) => {
  result[prop] = value;
});

/*--------- OR --(withour array destructuring)-------------
input.forEach(internalArr => {
  result[internalArr[0]] = internalArr[1];
});
*/

console.log(result);

您也可以使用 Array.prototype.reduce 实现此目的。 Array.prototype.reduce 是完成这项工作的正确工具。

var input = [
  ["make",];

const result = input.reduce((acc,curr) => {
  const [prop,value] = curr;
  acc[prop] = value;
  return acc;
},{});

console.log(result);

,

您可以为目标对象创建一个闭包,并使用 convert 返回的函数迭代数组。

const
    convert = target => ([key,value]) => target[key] = value,input = [['make','Ford'],['model','Mustang'],['year',1964]],output = {};

input.forEach(convert(output));

console.log(output);