如何将箭头函数转换为常规函数?

时间:2019-04-10 02:54:59

标签: javascript arrays arrow-functions

我正在尝试将箭头功能转换为常规功能

这段代码:

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:未知:意外的令牌,预期

3 个答案:

答案 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};
})
相关问题