首页 > 编程知识 正文

foreach循环遍历数组,遍历数组的三种方法

时间:2023-05-05 16:30:46 阅读:17042 作者:4304

js数组遍历在数组操作中经常使用。 在这期间,我学习了vue视频。 上面顺便说明了js数组的遍历方法,但是当时没有留下笔记。 到了今天回想起来,果然忘了,所以决定开始在这里记录。 别多嘴,接下来。

1.for循环

我觉得这种方法是js学习者最先接触到的js遍历方法,反正我最先接触的,可能是我的水平太低了。 我经常使用的是这个方法。

假设有//数组arr

letarr=[ 1,2,3,4,5 ];

//for循环

for(letI=0; i arr.length; I ) {

//do someing……

控制台. log (arr [ I ];

}

//console.log

1

2

3

4

复制五码

2 .自由循环

该方法的使用次数仅次于上一个for循环,但实际效率不如for循环高。 forEach循环的参数有2个,第一个是参数为实际操作的函数function,第二个参数that是改变this方向的参数,一般不怎么使用。 forEach参数的函数也有两个参数。 第一个参数是循环中的每个item,第二个参数是与每个项目相对应的下标索引。 请注意,在使用中,that和index都可以不写,而forEach循环不支持返回

假设有//数组arr

letarr=[ 1,2,3,4,5 ];

//福雷循环

arr.foreach (功能(item,index ) {

//do someing……

控制台. log (arr [ I ];

(,that );

//console.log

1

2

3

4

5

复制代码

3.for in循环

这确实也是一个循环,但平时很少用它遍历数组。 因为他的“弊端”很明显,所以也遍历数组的私人属性。 因为缺省情况下遍历数组的key值,所以它是字符串//,假设数组arr存在

letarr=[ 1,2,3,4,5 ];

//向数组中添加专用属性

arr.a='key '

//for in循环

for(letkeyinarr ) {

//do someing……

控制台. log (type of ) key );

}

//console.log

//注意到这里打印了六个,for in循环还遍历数组的专用属性

史汀

史汀

史汀

史汀

史汀

字符串复制代码

4.for of循环(ES6 ) ) ) ) ) )。

for of循环用es6的方法,他弥补了forEach和for in循环的弊端。 有返回,并且不遍历数组的专用属性。 注意: for of循环无法遍历对象

假设有//数组arr

letarr=[ 1,2,3,4,5 ];

//向数组中添加专用属性

arr.a='key '

//for of循环

for(letvalofarr ) {

//do someing……

控制台. log (val;

}

//console.log

//请注意这里打印了五个。 for of循环不遍历数组的专用属性

1

2

3

4

复制五码

5 .过滤器

过滤器是个人也经常使用的方法。 因为他遍历数组并返回新数组,所以不影响原始数组。 遍历数组中的每个项目,如果回调函数返回true,则将该项目添加到新数组中。 回调函数有两个参数“item,index”,其中item为各项,index为下标。 index可以不写,假设没有//也存在数组arr

letarr=[ 1,2,3,4,5 ];

//声明新的空数组

let newArr=[];

//向数组中添加专用属性

arr.a='key '

//过滤器

//这里使用es6箭头函数

newarr=arr.filter(item=item3);

//这里使用的是es5语法,与上面的操作相等

new arr=arr.filter (function (item ) )

返回项目3;

() )

控制台。

log(newArr)

//console.log

[4,5]复制代码

6.map映射

map映射会去遍历数组的每一项,但是不会操作改变原数组,同filter一样会返回一个新的数组。回调函数返回的是什么,对应的新数组的那一项就会是什么//假设存在一个数组arr

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

//声明一个新的空数组

let newArr = [];

//给数组添加一个私有属性

arr.a = "key"

//map映射

//这里使用的是es6语法

newArr = arr.map(item=>`

${item} `);

//这里是一般语法

newArr = arr.map(function(item){

return "

" + item + " ";

})

console.log(newArr)

//console.log

[

"

1 ",

"

2 ",

"

3 ",

"

4 ",

"

5 "

]复制代码

7.include和find

include和find都是es6的的方法。include有一个参数,它会遍历数组的每一项与参数对比,如果存在该参数,则返回true。而find的参数是一个回调函数,函数的参数是每一项以及对应下标,find会返回匹配的那一项,一旦匹配就不会继续往下匹配,find返回一个新的数组//假设存在一个数组arr

let arr = [1,2,3,4,5,55];

//include

console.log(arr.include(5));

//include console

true

//find

let res = arr.find(function(item,index){

//如果这一项包含了5则返回true

return item.toString().indexOf(5) > -1;

})

console.log(res);

//find console

5复制代码

8.some和every

some和every是两个作用截然相反的方法。some遍历数组,找到true,即返回true,否则返回false;every则是找到false返回false,否则返回true//假设存在一个数组arr

let arr = [1,2,3,4,5,55];

//some

let someResult = arr.some(item=>item > 4);

console.log(someResult);

//some console

true

//every

let evevyResult = arr.every(item=>item > 0);

console.log(everyResult);

//every console

true复制代码

9.reduce

说实话,这个方法我到现在都不太明白,无法在这里说明,希望大家自己查阅

2018.5.30 更新~

社区还是一个好地方,取长补短。本来以为一篇拙见不会有人来注意,就没有管理这篇文章,理解了reduce之后再来更新笔记,发现就有一些fndsb来为我指点迷津了。在此感谢各位fndsb的指正与指教~

正文:

reduce是es5的方法,从数组的第一项开始逐步迭代至最后一项。reduce的参数可以有两个,第一个是一个回调函数(必需),函数参数可包括四个:prev,cur,index,arr。其中,prev是前一个迭代的值,cur是当前迭代的一项,index是当前一项的下标,arr则是迭代的原数组;reduce的第二个参数是传入的基础值,可不用。如果不用,迭代将从数组的第一项开始//假设存在一个数组arr

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

//reduce

//不传入第二个参数

let result = arr.reduce((prev,cur,index,arr)=>prev+cur);

console.log(result);

//console

15

//传入第二个参数

let result = arr.reduce((prev,cur,index,arr)=>{return prev+cur;},100);

console.log(result);

//console

115

复制代码

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。