news 2026/4/3 4:43:47

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/3/23 5:49:48

必收藏!2025全球大模型开源生态全景图:从技术选型到未来趋势全解析

在2025年inclusionAI外滩大会现场&#xff0c;蚂蚁开源技术委员会副主席王旭发布的《全球大模型开源开发生态全景图》引发行业震动。 这份包含114个核心项目以及22个技术领域的报告&#xff0c;不单用数据把开源大模型的当下格局给勾勒出来了&#xff0c;还暗藏着技术演进的重要…

作者头像 李华
网站建设 2026/4/3 1:38:06

算法竞赛新利器:VibeThinker-1.5B在AIME24/25与HMMT25上的惊人表现

算法竞赛新利器&#xff1a;VibeThinker-1.5B在AIME24/25与HMMT25上的惊人表现 在算法竞赛圈&#xff0c;一个模型的表现往往不是看它能聊多广的话题&#xff0c;而是能否在90秒内解出一道组合数学题、写出无bug的动态规划代码。近年来&#xff0c;尽管大模型参数一路飙升至千亿…

作者头像 李华
网站建设 2026/3/12 3:45:13

GitLab CI共享Runner配置:开源项目自动测试VibeThinker

VibeThinker-1.5B 与 GitLab CI&#xff1a;轻量模型推理的自动化验证实践 在 AI 模型日益庞大的今天&#xff0c;动辄数百亿参数的“巨无霸”似乎成了性能的代名词。然而&#xff0c;现实却提出了另一个问题&#xff1a;我们真的需要这么大的模型来做数学题或写算法吗&#xf…

作者头像 李华
网站建设 2026/3/31 13:39:25

用户指南写不好?这份实用手册教你打造高效指引

对软件产品的深入理解是确保用户能够高效、顺畅地使用其全部功能的基础。一份优秀的用户指南不仅是操作手册&#xff0c;更是连接产品与用户的桥梁&#xff0c;它能显著降低学习成本&#xff0c;提升使用体验和满意度。然而&#xff0c;现实中很多指南流于形式&#xff0c;未能…

作者头像 李华
网站建设 2026/3/24 4:31:05

如何实时监控Docker容器运行状态?这4个工具你必须掌握

第一章&#xff1a;Docker容器运行状态监控概述在现代云原生架构中&#xff0c;Docker 容器的稳定性与性能直接影响应用的服务质量。对容器运行状态进行有效监控&#xff0c;是保障系统可靠性的关键环节。通过实时获取容器的 CPU、内存、网络和磁盘 I/O 使用情况&#xff0c;运…

作者头像 李华