• JS数组遍历方法集合


    就让我们在逆战中成长吧,加油武汉,加油自己

    1.for循环

    使用零时变量将长度存起来,当数组较大时优化效果才会比较明显

    var ar1=[2,4,6,8]
    for(var i=0;i<ar1.length;i++){
        console.log(i)
      console.log(ar1[i]) }

    2.foreach循环

    遍历数组中每个数,没有返回值

    使用break不能中断循环,使用return也不能返回到外层函数

    var ar1=[2,4,6,8]
    ar1.foreach((item,index,arr){
        //第一个参数代表当前元素
        //第二个参数代表当前元素下标
        //第三个参数代表原数组
    })
    //数组中长度多少就循环多少次

    3.for-of循环

    运行循环获得键值

    var ar1=[2,4,6,8]
    for(var i of ar1){
        console.log(i)
        //2,4,6,8
    }

    for-of可用使用break,continue 和 return 配合使用,跳出循环

    for(var i of ar1){
        if(i==4){
            break
        }
        console.log(i)//2
    }

    对于普通对象直接遍历的话是会报错的 obj is not iterable

    for-of循环不支持普通对象,但如果你想迭代一个对象的属性,你可以用for-in循环(这也是它的本职工作)或内建的Object.keys()方法:

    可以使用 Object.keys(obj) 方法将对象的键名生成一个数组,然后遍历这个数组

    var obj={
            "naem":"张三",
            "age":18
        }
        for(var i of Object.keys(obj)){
            console.log(i+":"+obj[i])
            //name:张三  age:18
        }

    4.for-in

    只能获得对象的键名,不能获得键值

    var obj={
            "naem":"张三",
            "age":18
        }
    for(var i in obj){
            console.log(i)
            //name
            //age
        }   

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

    let arr = [1, 2, 3]
    arr.set = 'hello'  // 手动添加的键
    Array.prototype.name = 'word'  // 原型链上的键
     
    for(var i in arr) {
      console.log(i)
    //0
    //1
    //2
    //set
    //name
    }

    for-in是为遍历对象而设计的,不适用于遍历数组。(遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串)

    5.map

    不会改变原数组,有返回值可用return,成为一个新数组(只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了)

    var ar1=[2,4,6,8,12]
    var map1=ar1.map((item)=>{
        if(item==6){
            return item*2
        }
    })
    console.log(map1)
    //[undefined, undefined, 12, undefined, undefined]

    之所以会出现undefined,是因为map()方法创建了一个新数组,但新数组并不是在遍历完array1后才被赋值的

    下面这样写才是正确的

    var map1=ar1.map((item)=>{
        if(item == 6){
            return item * 2
        }
        return item
    })
    console.log(map1)
    //[2,4,12,8,12]

    5.filter

    不会对原数组进行修改 返回新数组

     var filt=ar1.filter((item,index)=>{
         //返回索引大于2的元素组成新的数组
        if(index>2){
            return item
        }
     })
     console.log(filt)
     //[8,12]

    6.reduce

    reduce()作为一个循环使用。接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组。

    var a=[4,5,6,7,8]
    //item代表一次回调的值 初始值为0
    //cart代表当前元素的值
    //index当前下标
    //arr原数组
    var num=a.reduce((item,cart,index,arr)=>{
        return item+=cart
    },0)
    //初始值为0
    
    console.log(num) //输出为30

    7.some

    every()与some()方法都是JS中数组的迭代方法。

    some()是对数组中每一项运行给定函数,如果该函数满足任一返回true,则返回flase

    var a=[1,2,4,69,56,89]
    var some1=a.some((item)=>{
    return item > 50
    })
    console.log(some1)//true

    8.every()

    every()与some()方法都是JS中数组的迭代方法。

    every()是对数组中每一项运行给定函数,如果该函数所有项返回true,则返回true。一旦有一项不满足则返回flase

    var a=[1,2,4,69,56,89]
    var some1=a.every((item)=>{
    return item > 50
    })
    console.log(some1)//flase
  • 相关阅读:
    [java学习点滴]PropertiesUtil 读取properties配置帮助类
    Java快速向数据库中插入大量数据 比如10万条以上
    Java通过IO流输入输出 向文件中存入大量三个属性的值,并通过验证前两个属性输出第三个属性
    JSON 的使用方法
    jQuery easyUI id选择器 类选择器 标签选择器 属性选择器 及DOM对象和jQuery相互之间的转换
    解决request中文乱码问题
    jsp内置对象request使用方法2
    jsp内置对象request的使用方法
    easyui-dialog对话框练习
    使用combobox下拉列表框实现省 市 县 的三级联动
  • 原文地址:https://www.cnblogs.com/dcyd/p/12353137.html
Copyright © 2020-2023  润新知