首页 > 编程知识 正文

foreach循环遍历数组,js中遍历数组

时间:2023-05-04 13:19:15 阅读:39275 作者:3296

1.for循环

如果使用临时变量缓存长度以避免重复获取数组的长度,则优化在数组较大时效果会更明显。

for(j=0,len=arr.length; j len; j ) { } 2.foreach循环

遍历数组中的所有项目。 没有返回值,不影响原始数组。 不支持IE

//1无返回值的arr.foreach((item,index,array )={ //执行代码} ) /参数: value数组中的当前条目、索引当前条目、array源//数组中有几个项时,传递的匿名回调函数需要执行几次3.map循环

有返回值,可以返回

map回调函数支持return返回值,什么是return,就相当于为什么更改数组中的这一节。 (不影响原始数组,只是克隆了一个原始数组,并更改了克隆的此部分数组中的对应项。 )

arr.map (功能(值,索引,阵列) {//do somethingreturn XXX} ) varary=[ 12,23,24,42,1 ]; varres=ary.map (功能(item,index,ary ) { return item*10; )控制台. log (RES; //- [ 120,230,240,420,10 ]; 复制了原始数组并修改了console.log(Ary )。 //- [ 12,23,24,42,1 ]; 原始数组未更改4.forof遍历

可以正确响应break、continue和return语句

for(varvalueofMyarray )控制台. log ) value; (}5.过滤器遍历

原始数组保持不变,返回新数组

var arr=[ { id: 1,text: 'aa ',done: true },{ id: 2,text: 'bb ',done3360false}]console.log

arr.filter (功能(item ) ) { return item.done; ); vararr=[ 73,84,56,22,100 ] var newarr=arr.filter (item=item 80 ) /新数组(84,100 ) console.log ) new arr,

every ) )对数组中的每个项执行预定函数,如果该函数为每个项返回true,则返回true。

vararr=[ 1,2,3,4,5,6 ]; 控制台. log (arr.every (function (item,index,array ) { return item 3; (); false 7.some遍历

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

vararr=[ 1,2,3,4,5,6 ]; 控制台. log (arr.some (function (item,index,array ) { return item 3; (); true 8.reduce

reduce ) )方法将函数作为“累加器”(accumulator ),数组中的每个值(从左到右)开始缩小,最终成为一个值。

var total=[ 0,1,2,3,4 ].reduce ((a,b )=a b ); //10 转为ES5

[ 0,1,2,3,4 ].reduce (功能(previous value,currentValue,索引,array ) returnpreviousvaluecurrentvalue; );reduce接受一个函数,函数有四个参数,分别是:上一次的值,当前值,当前值的索引,数组

[ 0,1,2,3,4 ].reduce (功能(previous value,currentValue,索引,array ) returnpreviousvaluecurrentvalue; (,5 );reduce还有第二个参数,我们可以把这个参数作为第一次调用callback时的第一个参数,上面这个例子因为没有第二个参数,所以直接从数组的第二项开始,如果我们给了第二个参数为5,那么结果就是这样的:

个参数代替,
9.reduceRight
reduceRight()方法的功能和reduce()功能是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加。
reduceRight()首次调用回调函数callbackfn时,prevValue 和 curValue 可以是两个值之一。如果调用 reduceRight() 时提供了 initialValue 参数,则 prevValue 等于 initialValue,curValue 等于数组中的最后一个值。如果没有提供 initialValue 参数,则 prevValue 等于数组最后一个值, curValue 等于数组中倒数第二个值。

var arr = [0,1,2,3,4]; arr.reduceRight(function (preValue,curValue,index,array) { return preValue + curValue;}); // 10

回调将会被调用四次,每次调用的参数及返回值如下:

如果提供一个初始值initialValue为5:

var arr = [0,1,2,3,4]; arr.reduceRight(function (preValue,curValue,index,array) { return preValue + curValue;}, 5); // 15

回调将会被调用五次,每次调用的参数及返回的值如下:

同样的,可以对一个数组求和,也可以使用reduceRight()方法:

var arr = [1,2,3,4,5,6]; console.time("ruduceRight");Array.prototype.ruduceRightSum = function (){ for (var i = 0; i < 10000; i++) { return this.reduceRight (function (preValue, curValue) { return preValue + curValue; }); }}arr.ruduceRightSum();console.log('最终的值:' + arr.ruduceSum()); // 21console.timeEnd("ruduceRight"); // 5.725ms

10.find
find()方法返回数组中符合测试函数条件的第一个元素。否则返回undefined

var stu = [ { name: '舒心的音响', gender: '男', age: 20 }, { name: '王小毛', gender: '男', age: 20 }, { name: 'mtdyc', gender: '男', age: 20 }]function getStu(element){ return element.name == 'mtdyc'} stu.find(getStu)//返回结果为//{name: "mtdyc", gender: "男", age: 20}

ES6方法

stu.find((element) => (element.name == 'mtdyc'))

11.findIndex
对于数组中的每个元素,findIndex 方法都会调用一次回调函数(采用升序索引顺序),直到有元素返回 true。只要有一个元素返回 true,findIndex 立即返回该返回 true 的元素的索引值。如果数组中没有任何元素返回 true,则 findIndex 返回 -1。
findIndex 不会改变数组对象。

[1,2,3].findIndex(function(x) { x == 2; });// Returns an index value of 1.[1,2,3].findIndex(x => x == 4);// Returns an index value of -1.

12.keys,values,entries
ES6 提供三个新的方法 —— entries(),keys()和values() —— 用于遍历数组。它们都返回一个遍历器对象,可以用for…of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历

for (let index of ['a', 'b'].keys()) {console.log(index);}// 0// 1for (let elem of ['a', 'b'].values()) {console.log(elem);}// 'a'// 'b'for (let [index, elem] of ['a', 'b'].entries()) {console.log(index, elem);}// 0 "a"// 1 "b"

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