Javascript JS reduce:TypeError:无法在Array.reduce上创建属性
我有以下资料:Javascript JS reduce:TypeError:无法在Array.reduce上创建属性,javascript,Javascript,我有以下资料: let keys = ['a','b','c']; let vals = ['1','b','h']; const my_obj = keys.reduce(function(acc,key,i) { return acc[key]=vals[i]; },{}); logger.log(my_obj); 我希望我的目标是{a:1,b:b,c:h} 我得到: TypeError: Cannot create property 'b' on string '1' at Arra
let keys = ['a','b','c'];
let vals = ['1','b','h'];
const my_obj = keys.reduce(function(acc,key,i) {
return acc[key]=vals[i];
},{});
logger.log(my_obj);
我希望我的目标是{a:1,b:b,c:h}
我得到:
TypeError: Cannot create property 'b' on string '1'
at Array.reduce
我做错了什么?您需要将对象作为acc返回。 在代码中,您将返回指定的值
let key=['a','b','c'];
设vals=['1','b','h'];
const my_obj=键。减少(功能(acc,键,i){
acc[键]=VAL[i];
返回acc;
}, {});
console.log(my_obj)代码>您需要将对象作为acc返回。
在代码中,您将返回指定的值
let key=['a','b','c'];
设vals=['1','b','h'];
const my_obj=键。减少(功能(acc,键,i){
acc[键]=VAL[i];
返回acc;
}, {});
console.log(my_obj)代码>返回acc[key]=VAL[i]
实际返回值vals[i]
==>您最终只在环境中得到h
更新:在您的环境中,出现该错误是因为:
- 在第一次运行
键后。减少下一次acc
将是“1”
(返回acc[key]=vals[0]}
相等返回vals[0]
,即“1”
)
- 现在您进入第二轮
键。减少,您的acc是“1”
,然后您设置acc[key]=vals[1]}
equal“1”[b]=vals[1]
=>您得到了那个错误
试试这个:
let key=['a','b','c'];
设vals=['1','b','h'];
const my_obj=键。减少(功能(acc,键,i){
//返回新的扩展acc
返回({…acc[key]:vals[i]})
},{});
console.log(my_obj)代码>返回acc[key]=VAL[i]
实际返回值vals[i]
==>您最终只在环境中得到h
更新:在您的环境中,出现该错误是因为:
- 在第一次运行
键后。减少下一次acc
将是“1”
(返回acc[key]=vals[0]}
相等返回vals[0]
,即“1”
)
- 现在您进入第二轮
键。减少,您的acc是“1”
,然后您设置acc[key]=vals[1]}
equal“1”[b]=vals[1]
=>您得到了那个错误
试试这个:
let key=['a','b','c'];
设vals=['1','b','h'];
const my_obj=键。减少(功能(acc,键,i){
//返回新的扩展acc
返回({…acc[key]:vals[i]})
},{});
console.log(my_obj)代码>如果您想使用reduce方法,则可以,但必须返回累加器才能使其工作
let key=['a','b','c'];
设vals=['1','b','h'];
const my_obj=键。减少(功能(acc,键,i){
acc[键]=VAL[i];
返回acc;
}, {});
console.log(my_obj)代码>如果您想使用reduce方法,则可以,但必须返回累加器才能使其工作
let key=['a','b','c'];
设vals=['1','b','h'];
const my_obj=键。减少(功能(acc,键,i){
acc[键]=VAL[i];
返回acc;
}, {});
console.log(my_obj)
Object.fromEntries(key.map((val,i)=>[val,vals[i]])
您需要返回累加器本身。return acc[key]=vals[i]
-用console.log()
替换return
,并检查输出累加器正在损坏,因为您没有在对象的末尾返回累加器。fromEntries(key.map((val,i)=>[val,vals[i])
您需要返回累加器本身。return acc[key]=vals[i]代码>-用console.log()
替换return
,并检查输出累加器正在损坏,因为您没有在末尾返回累加器更改了return语句非常感谢!更改了退货声明非常感谢!谢谢托尼,我从中学到了很多。很酷!我很高兴这有帮助。谢谢托尼,我从中学到了很多。很酷!我很高兴这有帮助。