JavaScript常用遍历方法

循环方法有很多,但是到底什么场景适合什么方法,今天我们就来简单的剖析一下

1、for循环

  • for循环最重要的是有三个表达式:定义变量,判断条件,更新循环变量,三个表达式可以省略,但是分号不能省略。
  • for循环的执行的时候是先判断,然后再执行
  • 使用场景:
    for(let i = 0; i < list.length; i++ ){
        console.log(list)
    }

2、for-in循环

  • for-in循环不仅可以遍历对象自身的属性,也能遍历原型链上的对象的原型属性
  • 扩展:可以使用hasOwnProperty判断一个属性是不是对象自身的属性
  • 使用场景:主要用于遍历对象。也能遍历字符串和数组(不推荐使用)
  • 缺点:1、数组的键名是Number类型,但是使用for-in循环的时候他会将其转化为String类型,2、对象都继承了自其它/Object对象,继承属性的值默认是不可遍历的,但是for循环会遍历,原型链上的属性,我们使用的时候需要注意些。
    for(let key in Obj){
        console.log(Obj[key])
    }

3、for-of循环

  • ES6最新引入的,用以遍历所有的数据结构的统一方法
  • 如果一个数据结构上只要有Symbol.iterator属性,就被视为具有iterator接口,这类的数据就可以被for…of循环。本质上for…of循环内部调用的是数据结构的Symbol.iterator方法
  • 使用场景:包括数组,Set和Map结构,类数组对象(arguments,DOM NodeList对象)Generator 对象,字符串
  • 缺点:
    for (const iterator of result) {
      console.log(iterator);
    }

4、forEach循环

  • 对数组的所有成员依次执行参数函数,
  • 参数函数接收三个参数,当前值,当前序号,原数组
  • forEach还接受第二个参数,用来指定参数函数内的this指向
    result.forEach((item,index,arr)=>{
      console.log(item)
    },result)

5、map循环

  • 将数组所有成员一次传入参数函数,然后把每次的结果组成一个新数组返回,
  • 参数函数接收三个参数,当前值,当前序号,原数组
  • 循环的时候会跳过空位
  • map还接受第二个参数,用来指定参数函数内的this指向
    const result = [1, 2, 3, 4];
    let results = result.map((item, index, arr)=>{
      return n + 1;
    },result);
    console.log(results); [2, 3, 4, 5]

6、filter循环

  • 用于过滤数组成员,将满足条件的数组成员组合成一个新数组返回,不会改变原数组
  • 参数函数接收三个参数,当前值,当前序号,原数组
  • 循环的时候会跳过空位
  • 还接受第二个参数,用来指定参数函数内的this指向
    let results = result.filter((item,index,arr)=>{
      console.log(item)
    },result)

7、while循环

  • while循环要先声明循环变量,设置循环条件,只要条件为真就会一直循环
  • 在while循环中,循环条件可以是任何类型,但是最终都会转换为Boolean类型,为真则执行循环,为假则不执行
  • 使用场景:
    while (condition) {
      console.log(condition)
    }

8、do…while循环

  • 先执行后判断,
    do {
      console.log(condition)
    } while (condition);

9、some(),eveny() 循环遍历统计数是否满足某个条件,

  • 将数组的参数传递进参数函数中,参数函数接受三个参数,当前值,当前值位置,原数组
  • some():只要有一个是true,则some函数的返回值就是true。否则返回false
  • every():所有成员返回true,则every函数返回值就是true,否则返回false
    let res = result.some((item, index, arr) => {
      return item < 2;
    });
    
    let res = result.every((item, index, arr) => {
      return item < 2;
    });

10、reduce(),reduceRight()方法可依次处理数组的每个成员

  • reduce() 和 reduceRight()依次处理数组的每个成员,最终累计为一个值。
  • 区别是:reduce正序,reduceRight倒序
  • 参数函数接受4个参数:累计变量(必须),当前变量(必须),当前位置,原数组
    let res = result.reduce((sum, item, index, result) => {
      return sum + item;
    });
    
    let res = result.reduceRight((sum, item, index, result) => {
      return sum + item;
    });

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值