• 原生JS--数组循环总结


    (一)数组循环

    1.for循环

     let arr = [11,22,33,44,55];
    for(let i = 0;i<arr.length;i++){
        arr[i] = arr[i] *2;
    }
    console.log(arr)
    

      优化版for循环

    使用变量,将长度保存起来,当数组长度很大时,优化效果明显

    let arr = [11,22,33,44,55];
    for(let i = 0;let len = arr.length,i<len;i++){
        arr[i] = arr[i] *2;
    }
    console.log(arr)

    2.forEach

    优点:ES5推出的,数组自带,一般用来代替for

    缺点: 不可以使用break语句中断循环

       不可用return语句返回到外层函数

       没有返回值

       不可以改变原数组 性能没有for高 有兼容性

    arr.forEach(function(value,index,array){
      console.log('forEach遍历:'+i+'--'+value);
    })
    

      

    使用方法:

    3.map遍历

      用法与forEach基本相同,不同的是可以return返回值,但并不改变数组

      一般用来,修改数组的值从而映射出一个新数组。

    let arr = [1, 2, 3, 4, 5];
    let arrs = arr.map((value, index, array) => {
        return value * 2;
    });
    console.log(arrs); //[2, 4, 6, 8, 10]
    

      4.filter:过滤

    一般用来过滤一个数组,不改变原来的数组

     let arr = [1, 2, 3, 4, 5];
    let arrs = arr.filter((value, index, array) => { 
     if (value > 2) {
      return true;  } else {
       return false;
      }
    });
    console.log(arrs); //[3, 4, 5]

    5.for..of

      ES6新功能

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

      可以获得到键值,一般我们用他来循环数组

      支持字符串遍历,支持大多数数字对象,例如DOM NodeList对象

    for (let i of arr) {
      console.log(i);  // 11, 22, 33, 44, 55
    }
    

      

    (二)for..in与for...of

    for...in是为便利对象而设计的,不适用于遍历数组

    遍历数组时,我们推荐使用for...of

    for...in遍历数组的缺点:数组的下标index值是数字,而for...in遍历的index值(下标)的数据类型是字符串

    for...in...循环值遍历可枚举属性。像Array和Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如String的indexOf()方法或Object的toString()方法。循环将边路对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更为接近原型链中对象的属性覆盖原型属性)

    数组索引只是具有整数名称的枚举属性,并且与通用对象属性相同。不能保证for..in将以任何特定的顺序返回索引。for...in循环语句将返回所有可枚举属性,包括非整数类型的名称和继承的那些。

    for...in 语句以原始插入顺序迭代对象的可枚举属性。

    for...of 语句遍历可迭代对象定义要迭代的数据。

    使用hasOwnProperty() 来检查,如果找到的枚举属性是对象自己的(不是继承的)。如果是,该属性被记录。记录的属性是012foo,因为它们是自身的属性(不是继承的)。属性arrCustomobjCustom不会被记录,因为它们是继承的。

    该循环迭代并记录iterable作为可迭代对象定义的迭代值,这些是数组元素 3, 5, 7,而不是任何对象的属性。

  • 相关阅读:
    法院
    Spring Cloud常用组件
    PowerShell使用教程
    浅谈3DES加密解密
    SC win consul
    SB-Token-Jwt
    前端MVC Vue2学习总结
    spring-session-data-redis
    SpringBoot WS
    SpringBoot之使用Spring Session集群-redis
  • 原文地址:https://www.cnblogs.com/zero18/p/10973607.html
Copyright © 2020-2023  润新知