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

Neh*_*nia 1 javascript lambda

什么是样式以获得更好的可读性的最佳方法,嵌套的lambda表达式如:

movieLists.forEach(movie => movie.videos.forEach(
                     video => allVideoIdsInMovieLists.push(video.id)));
Run Code Online (Sandbox Code Playgroud)

任何样式指南或Lambda表达式的最佳实践.

小智 5

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

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

movieLists.forEach(pushMovie);
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用几种方法来构造此代码.首先是一个大的结论:

allVideosInMovieLists = [].concat(...movieLists.map(movie => movie.videos.map(video => video.id)));
Run Code Online (Sandbox Code Playgroud)

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

for (movie of movieLists) 
  for (video of movie.videos) 
    allVideoIdsInMovieList.push(video.id);
Run Code Online (Sandbox Code Playgroud)

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

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

movieLists.forEach(({videos}) => 
  videos.forEach(({id}) => 
    allVideoIdsInMovieLists.push(id)));
Run Code Online (Sandbox Code Playgroud)