You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:24:01