我正在尝试从表单元素创建对象。出于某种原因,它正在抛出错误。
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 ''
答案 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
即可。