15
社区成员




今天我们主要来说一下JavaScript 中 filter()、map()、forEach() 的区别,首先我们先来分别说一下这三个方法:
这三个都是 JavaScript 中常用的数组方法,但它们的功能和使用场景有所不同:
1. filter()
用途:创建一个新数组,包含通过测试(函数返回 true)的所有元素
返回值:新数组(由符合条件的元素组成)
是否改变原数组:否
示例:
javascript
const numbers = [1, 2, 3, 4, 5];
const evens = numbers.filter(n => n % 2 === 0);
// evens: [2, 4]
2. map()
用途:创建一个新数组,其结果是该数组中的每个元素调用提供的函数后的返回值
返回值:新数组(由回调函数的返回值组成)
是否改变原数组:否
示例:
javascript
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
// doubled: [2, 4, 6]
3. forEach()
用途:对数组的每个元素执行提供的函数
返回值:undefined(不返回任何值)
是否改变原数组:取决于回调函数是否修改原数组
示例:
javascript
const numbers = [1, 2, 3];
numbers.forEach(n => console.log(n));
// 输出: 1, 2, 3
方法 | 返回值 | 是否创建新数组 | 用途 |
filter( ) | 新数组 | 是 | 筛选符合条件的元素 |
mao( ) | 新数组 | 是 | 转换数组元素 |
forEach( ) | undefined | 否 | 遍历数组执行操作(无返回值) |
使用建议
当你需要从数组中选择某些元素时 → 使用 `filter()`
当你需要转换数组中的每个元素时 → 使用 `map()`
当你只需要遍历数组执行某些操作,不需要返回值时 → 使用 `forEach()`
链式调用时,通常先 `filter()` 再 `map()` 效率更高