news 2026/9/14 1:48:50

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/9/3 4:54:26

MIT Technology Review报道契机:引发主流媒体关注

小模型也能大作为&#xff1a;VibeThinker-1.5B-APP 如何用 7800 美元改写推理边界 在 GPT-4、Claude 和 Gemini 动辄数千亿参数、训练成本破亿的今天&#xff0c;一个仅 15 亿参数、总开销不到 8000 美元的模型&#xff0c;却在数学与编程推理任务中频频击败“巨无霸”——这听…

作者头像 李华
网站建设 2026/9/12 8:18:01

gRPC高性能通信配置:适用于高并发场景的服务架构

gRPC高性能通信配置&#xff1a;适用于高并发场景的服务架构 在AI推理服务从实验环境迈向生产系统的今天&#xff0c;一个核心挑战浮出水面&#xff1a;如何让轻量级但高效的模型&#xff0c;在高并发、低延迟的业务场景中稳定运行&#xff1f;传统RESTful API虽然开发友好&…

作者头像 李华
网站建设 2026/9/3 6:21:32

在半导体制造、精密加工、高端医疗等高精尖领域

微振动干扰带来的影响远超想象&#xff0c;轻则导致设备精度下降、作业数据失真&#xff0c;重则造成产品报废、设备损坏&#xff0c;而专业的防微振平台&#xff0c;正是破解这一行业痛点的有效途径。优质防微振平台的核心作用&#xff0c;是为各类精密设备隔绝外界所有振动干…

作者头像 李华
网站建设 2026/9/13 2:03:54

电子书《小模型大未来》编写计划:系统介绍VibeThinker理念

电子书《小模型大未来》编写计划&#xff1a;系统介绍VibeThinker理念 在人工智能技术狂飙突进的今天&#xff0c;我们正站在一个关键的转折点上——当GPT-4、Claude、PaLM等千亿参数巨兽不断刷新性能上限的同时&#xff0c;越来越多的开发者和研究者开始反思&#xff1a;是否必…

作者头像 李华