问题描述
我可以使用 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);