我正在尝试将箭头功能转换为常规功能
这段代码:
SELECT tbguru.id, tbabsenpeg.NIK, tbabsenpeg.tgl
FROM `tbguru`
LEFT JOIN tbabsenpeg ON tbguru.id = tbabsenpeg.NIK AND tbguru.kodeapp = tbabsenpeg.kodeapp
WHERE tbguru.kodeapp='Mantri-Lab 1020'
AND (tbabsenpeg.tgl = '2019-03-09' OR tbabsenpeg.tgl IS NULL);
像这样:
let rating = watchList.map( (item) => ({"title":item["Title"], "rating":item["imdbRating"]}) )
虽然我认为这两个是等效的,但我收到此消息
SyntaxError:未知:意外的令牌,预期
答案 0 :(得分:5)
您缺少return
。当您为Array.map方法传递自定义函数时,您将需要为该函数返回一个值。
let rating = watchList.map(function(item) {
return {"title":item["Title"], "rating":item["imdbRating"]};
})
尽管如此,使用箭头功能更为有用,因为箭头功能似乎更为简洁,并允许您访问其中的this
。
答案 1 :(得分:4)
在箭头函数中,=>
之后的任何表达式都将隐式返回函数。
在常规功能中,您需要使用return
关键字。还要在{}
中扭曲属性
let rating = watchList.map(function(item){
return {"title":item["Title"], "rating":item["imdbRating"]};
}
您还可以使用参数解构来缩短代码。
let rating = watchList.map(function({Title:title,imdbRating:rating}){
return {"title":Title, "rating":imdbRating};
}
或者您可以在解构时命名属性。
let rating = watchList.map(function({Title:title,imdbRating:rating}){
return {title,rating};
}
答案 2 :(得分:0)
您需要使用return,如果您使用shorthand notation,也可以使用destructuring对象
let rating = watchList.map(function({Title:title, imdbRating:rating}) {
return {title,rating};
})