Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS reduce:TypeError:无法在Array.reduce上创建属性_Javascript - Fatal编程技术网

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语句非常感谢!更改了退货声明非常感谢!谢谢托尼,我从中学到了很多。很酷!我很高兴这有帮助。谢谢托尼,我从中学到了很多。很酷!我很高兴这有帮助。