我通过创建下面的代码使用map合并了2个数组。
var result2 = data.map(k=>(
stAttendance = attendance.find(p=>p.StudentName._id==k._id),
({...k, Present:stAttendance?.Present ?? 0, absent:stAttendance?.absent ?? 0, extra:stAttendance?.extra ?? 0})
));
console.log(result2);
当我在HTML页面的script标签中使用此代码时,它可以完美地工作。 一旦将其放入Node JS router.get函数中,它就会开始显示以下错误
({...k, Present:stAttendance?.Present ?? 0, absent:stAttendance?.absent ?? 0, extra:stAttendance?.extra ?? 0})
^
SyntaxError: Unexpected token '.'
有人知道我在做什么错吗?
答案 0 :(得分:1)
对于每个node.green,甚至node.js v14都不支持可选的链接?.
运算符。但是,当我自己测试nodejs v14.4时,它确实对我有用。
与nullish coalescing operator ??
类似。
MDN似乎声称从node.js 14.0开始都支持两者,因此它们在您的v12中不起作用。
如果在您的nodejs版本中不支持该代码,则可以像在这些新运算符之前一样编写代码。只需将代码分成多个步骤,然后检查条件语句是否正确存在属性即可。
答案 1 :(得分:1)
您可以使用以下代码替换现有代码以进行可选的链接和无效合并。
var result2 = data.map(k=>(
stAttendance = attendance.find(p=>p.StudentName._id==k._id) || {},
({...k, Present: stAttendance.Present || 0, absent: stAttendance.absent || 0, extra:stAttendance.extra || 0})
));