常见的数组遍历方法及其异同点(map、forEach、filter)

本文详细介绍了JavaScript中常见的数组遍历方法:forEach、map和filter,包括它们的相同点和不同点。相同点是它们都会遍历数组,支持三个参数,但forEach无返回值,而map和filter会返回新数组。文章通过实例演示了这些方法的具体用法,适用于前端开发者理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

forEach、map、filter的区别

一、相同点

(1)都会循环遍历数组中的每一项

(2)map()、forEach()和filter()方法里每次执行匿名函数都支持3个参数

(3)只能遍历数组

二、不同点

(1)map()和filter()会返回一个新数组,不对原数组产生影响;

forEach()不会产生新数组,无返回值

1、Array.forEach()

介绍:

将数组循环一遍,函数参数有三个入参,不返回任何数据

格式:

[].forEach((item, index, arr) => {})

使用场景:

需要遍历一个数组的时候

示例:

const arr = ["张三", "李四", "王五"];
arr.forEach((item, index, arr) => {
  console.log(item, index);
});
// '张三' 0
// '李四' 1
// '王五' 2

2、Array.filter()

介绍:
对数组进行筛选,接收一个方法作为参数,该方法的返回值为 true 时就将该元素添加进新的数组

格式:

[].filter((item, index, arr) => true)

返回值:

一个新的数组

使用场景:

需要获取到列表里符合条件的元素

示例:

const arr = [1, 2, 3, 4, 5];

const newArr = arr.filter((item, index, arr) => item > 2);

console.log(newArr); //[3, 4, 5]

3、Array.map()

介绍:

对数组进行映射,传一个方法,该方法需要返回一个数据,然后将所有返回的数据组成一个数组

格式:

[].map((item, index, arr) => 对数据进行处理并返回)

返回值:

一个新数组

使用场景:

对数据进行处理,变成自己需要的数据格式

示例:

const arr = [
  { name: "张三", age: 14 },
  { name: "李四", age: 12 },
  { name: "王五", age: 13 },
]
const newArr = arr.map((item, index, arr) => item.name)
console.log(newArr); //['张三', '李四', '王五']

4、Array.some()

介绍:

对数组进行遍历,传入一个方法作为参数,返回一个 true 或者 false,一旦有一条返回的 true 则立即中止遍历

格式:

[].some((item, index, arr) => true)

返回值:

当有一次遍历符合条件则返回 true,所有数据都不符合条件返回 false

使用场景:

判断列表是否有一个或一个以上的元素符合某个条件

示例:

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 }
]
const hasZhangWei = arr.some((item, index, c) => item.name === "张伟")
console.log(hasZhangWei) // true

const hasLinSanXin = arr.some((item, index, c) => item.name === "林三心")
console.log(hasLinSanXin) // false

5、Array.every()

介绍:

对数组进行遍历,传入一个方法作为参数,返回一个 true 或者 false,false,一旦有一条返回的 false 则立即中止遍历(和 some 相反)

格式:

[].every((item, index, arr) => true)

返回值:

当有遍历的所有方法 true 则返回 true,否则 false

使用场景:

判断列表是否所有的元素都符合某个条件

示例:

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 },
]
const all18 = arr.every((item, index, c) => item.age > 18)
console.log(all18) // false

const all3 = arr.every((item, index, c) => item.age > 3)
console.log(all3) // true

6、Array.find(),Array.findIndex()

介绍:

对数组进行遍历,传入一个方法作为参数,返回第一个符合条件的元素本身或者他的下标(find 返回元素本身,findIndex 返回其下标)

格式:

[].find((item, index, arr) => true)
[].findIndex((item, index, arr) => true)

返回值:

find 返回符合条件的元素本身,没有就返回 undefined

findIndex 返回符合条件的元素的下标,没有就返回 undefined

使用场景:

拿到符合条件的元素或他的下标,没有就返回undefined

示例:

const arr = [
  { name: "张三", age: 14 },
  { name: "罗翔", age: 50 },
  { name: "张伟", age: 23 },
]
const person = arr.find((item, index, c) => item.name === '罗翔')
console.log(person) //   { name: "罗翔", age: 50 }

const i = arr.findIndex((item, index, c) => item.name === '罗翔')
console.log(i) // 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值