JavaScript中如何使用reduce替换map与filter的组合代码
实现代码
你可以直接用reduce一次遍历完成筛选+取值的逻辑,替换后的代码如下:
this.serverlist = data.NodeList.reduce((acc, cur) => { if (cur.productTypeId === "1") { acc.push(cur.HostName) } return acc }, [])
逻辑说明
- 原来的
map+filter是做了两次遍历:第一次遍历给符合条件的项返回HostName、不符合的返回undefined,第二次遍历去掉所有undefined项 - 改用
reduce后只需要一次遍历:初始累加器acc是空数组,遍历每个元素时只有符合条件才把对应HostName推入数组,不符合的直接跳过,最终返回的累加器就是你需要的serverlist,没有多余的空项,运行效率也更高。
内容的提问来源于stack exchange,提问作者pranami
相关产品推荐
相关产品推荐

