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:
回调将会被调用五次,每次调用的参数及返回的值如下:
同样的,可以对一个数组求和,也可以使用reduceRight()方法:
10.find
find()方法返回数组中符合测试函数条件的第一个元素。否则返回undefined
ES6方法
stu.find((element) => (element.name == 'mtdyc'))11.findIndex
对于数组中的每个元素,findIndex 方法都会调用一次回调函数(采用升序索引顺序),直到有元素返回 true。只要有一个元素返回 true,findIndex 立即返回该返回 true 的元素的索引值。如果数组中没有任何元素返回 true,则 findIndex 返回 -1。
findIndex 不会改变数组对象。
12.keys,values,entries
ES6 提供三个新的方法 —— entries(),keys()和values() —— 用于遍历数组。它们都返回一个遍历器对象,可以用for…of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历