3 回答
TA贡献1864条经验 获得超6个赞
如果你想使用 reduce 方法,那很好,但你必须返回累加器才能使其工作。
let keys = ['a', 'b', 'c'];
let vals = ['1', 'b', 'h'];
const my_obj = keys.reduce(function(acc, key, i) {
acc[key] = vals[i];
return acc;
}, {});
console.log(my_obj);
但我会建议使用简单的 for 循环,因为问题很简单
let keys = ['a', 'b', 'c'];
let vals = ['1', 'b', 'h'];
let my_obj = {};
for (let i = 0; i < keys.length; i++)
my_obj[keys[i]] = vals[i];
console.log(my_obj);
TA贡献1725条经验 获得超7个赞
您需要将对象作为 acc 返回。在您的代码中,您将返回分配的值
let keys = ['a', 'b', 'c'];
let vals = ['1', 'b', 'h'];
const my_obj = keys.reduce(function(acc, key, i) {
acc[key] = vals[i];
return acc;
}, {});
console.log(my_obj);
TA贡献1780条经验 获得超5个赞
return acc[key]=vals[i];
实际上返回vals[i]
==> 的值,您最终h
只能在https://playcode.io/环境中获得。
更新:在您的环境中,您收到该错误是因为:
keys.reduce
在你的下一个第一次运行之后acc
("1"
返回acc[key]= vals[0]}
相等的返回vals[0]
是"1"
)现在你来到第二轮
keys.reduce
,你的 acc 就是"1"
你设置 的acc[key]= vals[1]}
equal"1"[b] = vals[1]
==> 你得到了那个错误
尝试这个:
let keys = ['a','b','c'];
let vals = ['1','b','h'];
const my_obj = keys.reduce(function(acc,key,i) {
// return new expanded acc
return ({...acc, [key]: vals[i]})
},{});
console.log(my_obj);
添加回答
举报