細節-型別轉換和陣列篩選


Posted by mijouhsieh on 2023-04-07

型別轉換:

注意1. Number(null) 等於 0

const movie = movieList.results.filter(movie => 
movie.id === Number(req.params.movie_id))
res.render('show', { movie: movie[0] })

有一個bug,當 req.params.movie_id 是空字串時(沒有選擇電影時),movie.id 為 0 的電影是會被錯誤取出來,因為 Number(null) 等於 0。

const movie = movieList.results.find(movie => movie.id.toString() === req.params.movie_id)
res.render('show', { movie: movie })

解法: movie.id(是number) 先透過 .toString() 轉換成字串,再使用 === 跟 req.params.movie_id(是字串) 比較。

用 find() 取代 filter()

filter() 和 find() 都會return新陣列

情境:
filter() return 符合條件的多個項目。=> 尋找多個元素。
find() return 符合條件的第一個項目。=> 尋找1個元素。

movie.id 是不重複的,所以每次只會找到唯一有相同 movid.id 的電影。
=> 使用 find() 會更適合,
=> 也可直接回傳 movie 而不是 movie[0],讓程式碼變得更簡潔。


#filter( ) #find( ) #Number( ) #.toString( )







Related Posts

SlowHTTPTest筆記-1

SlowHTTPTest筆記-1

轉職前端工程師之路 Day4

轉職前端工程師之路 Day4

[Py 百日馬 Day 4-1] random module 常見方法 - 產生隨機數與亂數取樣/排序

[Py 百日馬 Day 4-1] random module 常見方法 - 產生隨機數與亂數取樣/排序


Comments