js遍历方法总结

1、普通for循环

语法:for(j = 0,len=arr.length; j < len; j++) {....}

说明:

1、使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。

2、这种方法基本上是所有循环遍历方法中性能最高的一种

2、forEach()

语法:arr.forEach(function(value,index,array){...}

说明:

1、没有返回值

2、参数:value数组中的当前项, index当前项的索引, array原始数组

3、理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改;但是可以自己通过数组的索引来修改原来的数组;

3、map()

语法:arr[].map(function(value,index,array){...}

说明:

1、有返回值,返回的是一个新数组,里面的每一项是匿名函数内return 出来的值

2、参数:value数组中的当前项,index当前项的索引,array原始数组;

3、区别:map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥

(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);

4、for...in循环

语法:for(var key in obj){...}

说明:

1、无序循环,用于遍历数组效率最低,常用来遍历对象

(数组索引只是具有整数名称的枚举属性,并且与通用对象属性相同。不能保证for ... in将以任何特定的顺序返回索引)

2、只遍历自身和继承的可枚举属性

5、for...of循环(ES6)

语法:for(let value of iterator){...}

说明:

1、用于循环迭代遍历器(Iterator),数组原生具有Iterator接口,所以也可以用for...of遍历

2、有序遍历

3、Set、Map、Generator也可以用此遍历

4、普通的对象能直接使用for...of遍历,可以使用Object.keys()将对象的可枚举属性取出合成一个数组,然后遍历这个键值数组

for(let key of Object.keys(obj)){

     let value = obj[key]

}

5、可以一break、continue、return配合使用

猜你喜欢

转载自my.oschina.net/lcl6659/blog/1801587