JavaScript 数组怎么过滤
你有没有遇到过这种情况:手机相册里存了上百张照片,想找出上个月和家人去海边拍的那些,要是一张张翻,既费时间还容易漏。其实在编程里,处理数据也会遇到类似的“找特定内容”需求,比如一堆订单里挑出超过500元的消费,或者一串名字里只保留带“小”字的称呼。JavaScript里的数组过滤,就是专门帮你做这件事的工具,而且方法特别简单。
最常用的:filter()方法
数组是JavaScript里存一组数据的容器,比如存了一堆水果名const fruits = ['苹果', '香蕉', '草莓', '芒果']。想挑出带“草”字的水果,不用自己写循环挨个判断,用filter()一句话就能搞定。

它的逻辑就像“给数组里的每个元素发个小问卷”:问每个元素“你符合我要的条件吗?”,符合的就留下,不符合的就过滤掉。比如刚才的例子,代码是这样的:
`javascript
const result = fruits.filter(fruit => fruit.includes('草'));
console.log(result); // 输出['草莓']
`
这里的fruit是临时变量,代表数组里的每一个元素,includes('草')就是判断这个元素有没有“草”字。再举个生活化的例子:你买了一堆零食,想挑出重量超过100克的,数组是const snacks = [{name:'薯片', weight:150}, {name:'糖', weight:80}, {name:'饼干', weight:200}],过滤代码是const heavySnacks = snacks.filter(snack => snack.weight > 100),结果就是薯片和饼干。
注意:filter()不会改原数组
很多人容易搞错:filter()是生成一个新数组,不会动原来的数组。还是用刚才的水果例子,原数组fruits还是原来的四个,不会变成只有草莓。如果想确认,打印一下原数组就知道了,这和你用相册软件筛选照片、原照片不会消失是一个道理。
其他实用小技巧
有时候条件会复杂一点,比如想挑出既带“果”字、又长度不超过3个字的水果。不用拆成两步,直接把条件用&&连起来就行:
`javascript
const specialFruits = fruits.filter(fruit => fruit.includes('果') && fruit.length <=3);
`
这样挑出来的就是苹果和芒果,既符合带“果”字,又都是3个字以内。如果条件是“或”,就用||,比如“带‘草’或带‘香’的水果”,就能得到香蕉和草莓。
总结
数组过滤是JavaScript里最常用的操作之一,filter()就是专门干这事的工具。它像你整理衣柜时“把冬天的外套挑出来”一样简单:给它一个判断条件,它就帮你把符合条件的元素攒成新数组,原数组不会被改动。不管是处理数据、整理信息,还是做一些小功能,这个方法都能帮你省不少功夫。