使用空对象减少函数不起作用

时间:2017-05-03 17:00:11

标签: javascript ecmascript-6

我正在尝试从表单元素创建对象。出于某种原因,它正在抛出错误。

let allInputs = [...formData]; 
allInputs.pop(); //Remove submit button
return allInputs.reduce((userObj, data) => userObj[`${data.name}`] = data.value, {});

错误

userModel.js:17 Uncaught TypeError: Cannot create property 'last_name' on string ''

2 个答案:

答案 0 :(得分:4)

你需要在每次reduce的迭代中返回累加器或者你的情况/usr/bin/ffmpeg -i video.mp4 -an -ss 00:00:1 -t 00:00:08 -async 1 ,这样你的代码应该是这样的。

userObj

答案 1 :(得分:3)

问题在于你第二次调用减速器时返回的是什么,而不是你开始使用的。

您正在返回作业,但应该返回一个对象。

(userObj, data) => userObj[`${data.name}`] = data.value // <-- this returns the result of the assignment

这样的事情应该有效:

allInputs.reduce(
  (userObj, data) => Object.assign(userObj, {
    [data.name]: data.value
  }),
  {}
);

注意:如评论中Vic所述,不需要字符串插值,即${data.name} - &gt;只需data.name即可。