js中的几种遍历方法

1.for循环

1.基础版
for (var i = 0; i < arr.length; i++) {

        }
2.优化版    
for(var i = 0, len = arr.length; i < len; i++) {
       }
 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。
 这种方法基本上是所有循环遍历方法中性能最高的一种,
 并且这一类型的for循环可以通过用中断语句(breakcontinuereturn)来中断循环,      
 3.增强for循环
 

2. arr.foreach

遍历数组中的每一项,没有返回值,对原数组没有影响.

当forEach操作基本数据类型的时候,并不会改变原数组中的值。而当forEach操作引用数据类型的时候,才会改变原数组中的值。

数组本身也是引用数据类型,所以我们要用forEach来修改基本数据类型的时候,可以通过引用访问的方式来对元素进行修改。

不能通过中断语句来终止循环。

arr = ['a', 'b', 'c', 'd']
        arr.forEach((item, index, array) => {
            console.log(item); 每一项的内容
            console.log(index);每一项内容下下标
            console.log(array);原始的数据 
        });
let arr = [1, 2, 3, 4]
arr.forEach((item, index) => {
	arr[index] = 0
})
console.log(arr)  // [0, 0, 0, 0]

3. arr.map

arr.foreach类似。有返回值,可以return出来

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

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

arr2=arr.map((item, index, array) => {
          return  item = 2 * item
        });
        console.log(arr2);
        //arr2的内容会基于return的语句赋值给新的数组中的每一项
        //arr2相当于在arr每一项的基础上*2

map和foreach区别::

1.forEach()方法不会返回执行结果,而是undefined。也就是说,forEach()会修改原来的数组。

map()方法会得到一个新的数组并返回。

2.forEach()的执行速度 < map()的执行速度

4.for···of

允许遍历获得键值(value),对于普通对象,没有部署原生的 iterator 接口,直接使用 for...of 会报错;

for...of 循环可以与break、continue 和 return 配合使用,跳出循环 

 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象

   arr2 = ['a', 'b', 'c', 'd']
        for (let ietm of arr2) {
            console.log(ietm);
        }
        //输出 a,b,c,d

 5.for····in····

可以使用 for...in 循环遍历键名

for...in 循环不仅遍历数字键名,还会遍历手动添加的其它键,甚至包括原型链上的键。for...of 则不会这样

循环主要是为了遍历对象而生,不适用于遍历数组

arr2 = ['a', 'b', 'c', 'd']
        for (let item in arr2) {
            console.log(item);
        }
        //遍历得到字符串类型的键  0,1,2,3
        
   arr2 = {
            am: 'a',
            bm: 'b',
            cm: 'c'
        }
        for (let item in arr2) {
            console.log(item);
        }
        //遍历得到键名 am,bm,cm

 6.filter

 不会改变原始数组,返回新数组,用于对之前数组的过滤和筛选

var arr = [1, 2, 3];
const arr2=arr.filter(item => { // item为数组当前的元素
    return item > 1; // [2, 3]
})

map和filter的区别:

  • 相同点:filter 和 map 都是对数组的操作,均返回一个新的数组
  • 不同点:filter是满足条件的留下,是对原数组的过滤;map则是对原数组的加工,映射成一一映射的新数组

7.somo() 和every()

every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。(全部满足才返回true)

 every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。(一个满足就返回true)

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
console.log( arr.every( function( item, index, array ){ 
        return item > 3; 
    })); 
false

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
    console.log( arr.some( function( item, index, array ){ 
        return item > 3; 
    })); 
true
posted @   铜须的编程生活  阅读(1773)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示