如何一次性统计Movie类数据中Comedy、Romance、Tragedy的数组长度?
你可以通过Array.reduce方法单次遍历已筛选的电影数据,一次性得到所有分类的统计结果,不需要多次调用filter做单独筛选:
// 筛选出所有类型为Movie的数据 const movieList = data.filter(item => item.genre?.selected === "Movie") // 单次遍历统计三类戏剧的数量 const genreCount = movieList.reduce((result, current) => { const dramaConfig = current["1"]?.drama dramaConfig?.Comedy && result.comedy++ dramaConfig?.Romance && result.romance++ dramaConfig?.Tragedy && result.tragedy++ return result }, { comedy: 0, romance: 0, tragedy: 0 })
后续直接取对应属性即可拿到各分类的长度:
console.log(genreCount.comedy) // 喜剧类数量 console.log(genreCount.romance) // 爱情类数量 console.log(genreCount.tragedy) // 悲剧类数量
这个方案只需要遍历一次筛选后的电影数组,比多次调用filter的性能更好,后续要新增统计分类时,只需要在初始统计对象中新增对应属性、补充判断逻辑即可,维护成本更低。
内容的提问来源于stack exchange,提问作者JS3
相关产品推荐
相关产品推荐

