news 2026/4/18 8:41:12

JS 数组魔法:map 和 filter 怎么用?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JS 数组魔法:map 和 filter 怎么用?

JS 数组魔法:map 和 filter 怎么用?

生活中的例子 01

电商网站:把所有商品价格打 8 折显示(map)。

生活中的例子 02

社交软件:只显示在线的好友列表(filter)。

生活中的例子 03

待办清单:筛选出所有“已完成”的任务(filter)。

新手入门指南

COPY

别再傻傻写循环了,来试试 map 和 filter!

嘿,朋友!如果你刚开始学 JavaScript,你可能经常对着一大堆数据发愁。比如,你有一个很长的用户列表,想把他们的名字都变成大写,或者想把不及格的分数挑出来。

很多新手的反应是:“我知道!用for循环!”

虽然for循环没问题,但在现代前端开发里,我们有更帅气、更简洁的方法:mapfilter。今天我们就来把它们彻底搞懂。

1. The Hook:工厂流水线

闭上眼睛想象一下,你是一家食品加工厂的老板,面前有一条传送带,上面全是未处理的土豆。

  • 如果你想做薯片:你需要对传送带上的每一个土豆进行切片、油炸。出来的结果数量没变,但土豆变成了薯片。这就是`map`(映射)—— 每一个都处理,变个样出来。
  • 如果你想挑出大土豆:你需要在传送带上装个筛子,把小土豆扔掉,只留下大土豆。出来的结果数量变少了,但原本的大土豆还是大土豆,没有变样。这就是`filter`(过滤)—— 按条件筛选,留下的都是精华。

2. 它们到底是啥?

  • `map()`:它会创建一个新数组,数组里的每个元素都是经过你刚才写的函数“加工”过的。
  • `filter()`:它也会创建一个新数组,里面只包含那些通过你测试(返回 true)的元素。

3. 代码实战:来看看怎么用

别怕代码,我们看个超简单的例子。

第一招:Map (全员变身)

假设我们有一组商品价格,双十一来了,老板说统统打五折!

const 原始价格 = [100, 200, 50, 300]; // 以前你可能这样写: // let 打折价格 = []; // for(let i = 0; i < 原始价格.length; i++) { // 打折价格.push(原始价格[i] * 0.5); // } // 现在用 map,只需一行! const 打折价格 = 原始价格.map(price => price * 0.5); console.log(打折价格); // 输出: [50, 100, 25, 150]

看,map自动帮你遍历了数组,把每个price都乘了 0.5,然后打包成一个新数组给你。

第二招:Filter (优胜劣汰)

现在,我们想从刚才的打折商品里,找出那些仍然超过 60 块钱的“贵族商品”。

// 接着上面的数据 const 还是太贵了 = 打折价格.filter(price => price > 60); console.log(还是太贵了); // 输出: [100, 150] // (因为 50 和 25 都被无情地淘汰了)

filter会问每一个数字:“你大于 60 吗?” 如果是,就留下来;如果不是,就拜拜。

4. 新手最容易掉的坑

这里有个千万要注意的地方:它们不会改变原始数组!

新手经常写出这样的代码:

const numbers = [1, 2, 3]; numbers.map(n => n * 2); // 这里虽然计算了,但你没接住它! console.log(numbers); // 输出: [1, 2, 3] ... 咦?怎么没变?

这就好比你做好了薯片,但是没拿袋子装起来,直接扔地上了。mapfilter都会返回一个全新的数组,你需要用一个变量(比如const newResult = ...)把它存起来。

5. 总结一下

记住这两句口诀:

  • 想要大家一起变身(数量不变),用`map`
  • 想要按条件挑挑拣拣(数量变少),用`filter`

学会这两个方法,你的代码就像是从手洗衣服进化到了全自动洗衣机,既省力又干净!快去你的代码里试试吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:04:57

【收藏】关于ReAct Agent的深入理解——ReAct Agent是稳定的吗?

“大模型的原生能力存在边界&#xff0c;当智能体需攻克复杂任务时&#xff0c;我们必须通过精准提示词&#xff0c;为模型注入复杂任务的标准化处理逻辑。” 近期在深耕模型部署实践与Langchain新版本框架适配时&#xff0c;一个关于ReAct Agent智能体的核心问题突然浮现脑海&…

作者头像 李华
网站建设 2026/4/12 23:14:19

RunPod自定义镜像导入教程:灵活配置VibeThinker运行环境

RunPod自定义镜像导入教程&#xff1a;灵活配置VibeThinker运行环境 在当前AI模型部署的实践中&#xff0c;一个明显的趋势正在浮现&#xff1a;我们不再一味追求参数规模的“大而全”&#xff0c;而是越来越关注小而精、专而强的垂直领域模型。尤其是在数学推理与编程任务中&a…

作者头像 李华
网站建设 2026/4/16 19:56:57

2026亲测!成都口碑好的有机肥商

《有机肥哪家好&#xff1a;专业深度测评排名前五》开篇&#xff1a;定下基调在农业生产中&#xff0c;有机肥的使用对于土壤改良和作物生长起着至关重要的作用。为了帮助对有机肥感兴趣的人群挑选到合适的产品&#xff0c;我们开展了本次有机肥测评。本次参与测评的产品为盖尔…

作者头像 李华
网站建设 2026/4/10 16:30:55

技术博客自动撰写:用VibeThinker整理算法解题笔记

用 VibeThinker 自动化整理算法解题笔记&#xff1a;轻量模型如何改变学习方式 在准备技术面试或刷 LeetCode 的过程中&#xff0c;你是否曾有过这样的体验&#xff1a;花了一小时终于写出正确代码&#xff0c;却懒得再回头整理思路&#xff1b;或者翻看几个月前的笔记时&…

作者头像 李华
网站建设 2026/4/12 18:51:09

Google Colab免费试用可能?社区版资源限制与应对策略

Google Colab 免费试用&#xff1f;社区版资源限制与应对策略 在人工智能快速普及的今天&#xff0c;越来越多的学生、独立开发者和科研人员希望亲手运行语言模型来验证想法或完成项目。然而&#xff0c;动辄需要 A100 显卡和数十 GB 显存的主流大模型&#xff0c;让大多数人望…

作者头像 李华
网站建设 2026/4/18 8:08:19

按需付费新模式:低频用户也可享受高质量推理服务

按需付费新模式&#xff1a;低频用户也可享受高质量推理服务 在当前大模型动辄数百亿参数、训练成本动辄上百万美元的背景下&#xff0c;一个仅15亿参数的小模型却悄然在数学与编程推理领域掀起波澜。它不追求全能对话&#xff0c;也不主打情感交互&#xff0c;而是精准切入竞赛…

作者头像 李华