首页 > 编程知识 正文

foreach遍历数组详解,遍历数组的三种方法

时间:2023-05-04 22:26:36 阅读:17097 作者:1202

遍历有几种方法

数组方法

地图

福瑞克

菲尔斯特

查找范围

findIndex

艾沃利

三人组

冗馀

冗馀光

其他方法

for

for in

for of

数组方法

地图

核心

创建一个新数组,该数组作为调用数组中每个元素提供的函数的结果返回。

不更改原始数组

返回值是新数组

let testArr=[ '子0 '、'子1 '、'子2'];

letresultarr=testarr.map((item,index ) )={return )处理(${item} )。

);

控制台. log (resultarr ); //结果:处理子代0、处理子代1、处理子代2

缺陷

可以使用返回,但不能使用break和continue

福瑞克

核心

一次运行为数组中的每个元素提供的函数。

总是回到undefined。

不更改原始数组

let testArr=[ '子0 '、'子1 '、'子2'];

testarr.foreach((item,index )={return`forEach处理${item} )。

);

缺陷

可以使用返回,但不能使用break和continue

菲尔斯特

核心

过滤数组中的每个项目,返回满足条件的item组成的数组

原始数组保持不变

let filterArr=[ '子0 '、'子1 '、'子2'];

letfilterresult=filter arr.filter ((item,index ) )={return item==='子0 ';

);

console.log (过滤器arr ); //[ '子0 '、'子1 '、'子2']

console.log(filterresult; [ '子0']

缺陷

可以使用返回,但不能使用break和continue

查找范围

核心

检查数组以找到第一个满足条件的项目,然后返回该项目。 否则我会回到undefined

数组保持不变

let findArr=[ '子0 '、'子1 '、'子2']

letfind result=findarr.find ((item,index ) )={return item==='子0 ';

);

控制台. log (findresult; //结果为:个孩子0

缺陷

可以使用返回,但不能使用break和continue

findIndex

核心

遍历数组以找到第一个满足条件的项目,并返回该项目的索引值。 否则返回-1。

数组对象保持不变。

let findIndexArr=[ '子0 '、'子1 '、'子2'];

letfindindexresult=findindexarr.findindex ((item,index ) )={return item==='子0 ';

);

控制台. log (findindexresult; //结果为: true

缺陷

可以使用返回,但不能使用break和continue

艾沃利

核心

对数组中的每个项执行预定函数,如果该函数为每个项返回true,则返回true。 简单来说,就是看数组中的每个元素是否满足要求,如果都满足,则返回true,否则返回false

leteveryarr=[ 2,3,4 ];

leteveryresult=every arr.every ((item,index ) ) returnitem0);

控制台. log (every result; //结果为: true

缺陷

可以使用返回,但不能使用break和continue

三人组

对数组中的每个项目执行指定的函数,如果该函数为其中一个项目返回true,则返回true。

letsomearr=[ 2,3,4 ];

letsomeresult=some arr.some ((item,index )={return item

> 3});

console.log(someResult);//结果为: true

缺陷

可以使用return,但是不能使用break和continue

reduce

接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。

第二个参数作为第一次调用的a的值

//reducer

let reduceArr = [0,1,2,3,4]

let reduceResult= reduceArr.reduce((a, b)=>{return a +b;

});

console.log(reduceResult);//结果: 10

缺陷

可以使用return,但是不能使用break和continue

reduceRight

和reduce一样是累加器,不过是从右往左计算

第二个参数作为第一次调用的a的值

let reduceRightArr = [0,1,2,3,4]

let reduceRightResult= reduceRightArr.reduceRight((a, b)=>{return a +b;

});

console.log(reduceRightResult);//结果: 10

缺陷

可以使用return,但是不能使用break和continue

其他方法

for循环

核心

使用临时变量,并且遍历的是key.

let testArr = ['子项0','子项1','子项2'];for(var i = 0; a < testArr.length; i++){

console.log(testArr[i]);

}

缺陷

可以正常使用使用break和continue, 但是不能正常使用return

let testArr = ['子项0','子项1','子项2'];//break

for(var i = 0; i < testArr.length; i++) {if(i === 1) {break;

}

console.log(testArr[i]);

}//结果为: 子项0

//continue

for(var i = 0; i < testArr.length; i++) {if(i === 1) {continue;

}

console.log(testArr[i]);

}//结果为: 子项0 子项目2

//return

for(var i = 0; i < testArr.length; i++) {if(i === 1) {return;

}

console.log(testArr[i]);

}//结果为什么也没有

for in循环

核心

遍历的是key

let testArr = ['子项0','子项1','子项2'];for(let i intestArr){

console.log(testArr[i])

}

缺陷

可以正常使用使用break和continue, 但是不能正常使用return

let testArr = ['子项0','子项1','子项2'];//break

for(let i intestArr){if(i === 1) {break;

}

console.log(testArr[i]);

}//结果为: 子项0

//continue

for(let i intestArr){if(i === 1) {continue;

}

console.log(testArr[i]);

}//结果为: 子项0 子项目2

//return

for(let i intestArr){if(i === 1) {return;

}

console.log(testArr[i]);

}//结果为什么也没有

for of循环

核心

遍历的是value

let testArr = ['子项0','子项1','子项2'];for(let i of testArr) {

console.log(i);

}

缺陷

可以正常使用使用break和continue, 但是不能正常使用return

let testArr = ['子项0','子项1','子项2'];//break

for(let value of testArr){if(value === '子项1'){break;

}

console.log(value);

}//结果为: 子项0

//continue

for(let value of testArr){if(value === '子项1'){continue;

}

console.log(value);

}//结果为: 子项0 子项目2

//return

for(let value of testArr){if(value === '子项1'){return;

}

console.log(value);

}//结果为什么也没有

注意⚠️

数组方法都不可以用break和continue,for循环之类的不可以用return但是可以正常使用break和continue

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