JS数组的几种遍历方法

JS数组的几种遍历方法

定义一个数组

var arr = ['apple','orange','banner','dpn','dulin']

1、for循环

for (var i = 0; i < arr.length; i++) {
	console.log(arr[i]);
}

在这里插入图片描述

循环的点就在于数组会一直调用这个函数,直到arr.length为0没有currentValue值的时候

  • currentValue:当前遍历到的元素的值
  • index:当前遍历到的元素的索引
  • arr:原数组

2、forEach循环

没有返回值
如果循环很复杂的时候,for循环效率更高

arr.forEach((currentValue,index, arr) => {
	console.log(currentValue + '------' + index);
	console.log(arr);
})

在这里插入图片描述
3、filter

返回一个新的数组
通过筛选 return 满足筛选条件的数据,然后把所有满足条件的元素放进新的数组

var newarr = arr.filter((currentValue,index, arr) => {

//返回元素第一个元素为 ‘d’的元素
	return currentValue.charAt(0) === 'd'
})
console.log(newarr);

在这里插入图片描述
4、map

类似于forEach
但是有返回值,return的是啥返回的新数组就是什么
不返回,默认是一个undefined元素的数组
在这里插入图片描述

arr.map((currentValue,index, arr) => {
	console.log(currentValue + '------' + index);
	console.log(arr);
	return currentValue
})

在这里插入图片描述
return的新数组的内容
在这里插入图片描述

5、some

主要检测数组中的元素是否满足条件
返回一个布尔值,只返回一个满足条件的元素
【如果找到第一个满足条件的元素,则终止循环】

var flag =  arr.some((currentValue,index, arr) => {
	return currentValue.charAt(0) === 'a'
})
console.log(flag);

遍历的时候检测到第一个元素的首字母是‘a’,返回true
在这里插入图片描述

6、every

类似于some
但是some是遇到有满足条件的返回true
但是every是要求全部满足条件才返回true

var flag = arr.every((currentValue,index, arr) => {
	return currentValue.charAt(0) === 'a'
})
console.log(flag);

遍历的时候,检测到不是所有的元素首字母是‘a’,所以返回false
在这里插入图片描述

7、reduce()

返回的数据类型根据 return 后面的数据类型决定

var arr1 = arr.reduce((previousValue, currentValue, index, arr) => {
	console.log(previousValue);
	console.log(currentValue +'-----'+ index);
	return currentValue == 'apple'
	return arr
	return currentValue + previousValue
},[])

previousValue:上次返回回来的值
currentValue: 当前元素值
index:当前元素索引值
arr:原数组
在这里插入图片描述
如果再reduce()的第二个参数没有设置数据类型
那么默认就会把数组的第一个元素作为previousValue的值

如果再reduce()的第二个参数设置了数据类型
那么第一次返回的previousValue值是空的,默认的数据类型就是第二个参数设置的数据类型,如上 是数组类型

  • return后面的内容是一个【判断】,那就返回有一个布尔值,这个布尔值就是previousValue,每次都会更新return的值 ------------如上

  • return后面是一个数组,就返回一个数组
    在这里插入图片描述

  • return一个字符串
    并且没有设置第二个参数,所以第一个previousValue的值默认是第一个元素的值—‘apple’
    在这里插入图片描述

8、for of

for (var val of arr) {
	console.log(val);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值