Javascript编码嵌套lambda表达式的样式

时间:2017-07-15 04:33:25

标签: javascript lambda

为更好的可读性设计样式的最佳方法是什么,嵌套的lambda表达式如:

movieLists.forEach(movie => movie.videos.forEach(
                     video => allVideoIdsInMovieLists.push(video.id)));

任何样式指南或Lambda表达式的最佳做法。

1 个答案:

答案 0 :(得分:5)

您的代码没有任何问题。但是,有些人喜欢遵循定义小函数的风格,除了其他好处之外,还可以通过引入更好的名称来使代码更具可读性。

const pushVideos = videos => videos.forEach(pushVideo);
const pushVideo  = video  => allVideoIdsInMovieLists.push(video.id);
const pushMovie  = movie  => pushVideos(movie.videos);

movieLists.forEach(pushMovie);

但是,您可以使用几种方法来构建此代码。首先是一个大联盟:

allVideosInMovieLists = [].concat(...movieLists.map(movie => movie.videos.map(video => video.id)));

写一个好的for循环也是合理的:

for (movie of movieLists) 
  for (video of movie.videos) 
    allVideoIdsInMovieList.push(video.id);

有些人会说这更具可读性。

回到原始代码,解构参数列表可能会让它更具可读性:

movieLists.forEach(({videos}) => 
  videos.forEach(({id}) => 
    allVideoIdsInMovieLists.push(id)));