美文网首页
js遍历数组和对象

js遍历数组和对象

作者: 陆璐monica | 来源:发表于2019-07-05 15:40 被阅读0次

    遍历种类

    1. forEach 对数组的循环的函数,不会改变数组值
    2. map 创建新数组,返回元素调用函数返回的结果
    3. every 测试一个数组内所有的数组是否都能通过某个指定函数的测试,返回布尔值
    4. for循环 常用的循环
    5. while循环 先判断后执行
    6. do-while循环,先执行后判断,至少执行一次
    7. for-of 数组、setmap等都可以使用
    8. for-in 主要用于对象遍历
    9. 遍历对象,获取对象属性key的数组,遍历,该数组,使用的方法主要有Object.keys(),Object.getOwnPropertyNames

    forEach

    对数组的循环的函数,不会改变数组值
    数组对象例子

    var array1 = [{name:'张三丰',sex: '男'}];
    array1.forEach(function(item) {
      item['name'] = 'dkdkdk';
      console.log(item);
    });
    console.log(array1)
    
    输出:
    > Object { name: "dkdkdk", sex: "男" }
    > Array [Object { name: "dkdkdk", sex: "男" }]
    

    普通数组例子

    var array1 = [1,2,3];
    array1.forEach((currentValue,index) => {
      currentValue++
      console.log(currentValue);
    });
    console.log(array1)
    
    输出:
    > 2
    > 3
    > 4
    > Array [1, 2, 3]
    

    map

    创建新数组并返回调用函数的值
    例子

    var array1 = [1,2, 3, 4];
    const map1 = array1.map(x => x * 2);
    console.log(map1);
    
    输出:
    > Array [2, 4, 6, 8]
    

    every

    检查数组内的元素是否都满足某个函数的检验,返回布尔值
    例子

    var array1 = [1, 30, 39, 49, 10, 13];
    let bl = array1.every((currentValue) => {
        return currentValue > 40
    })
    console.log(bl)
    
    输出:
    > false
    

    for循环

    将长度缓存起来,避免重复获取长度,数据量较大的时候优化效果比较明显

    var arr = [1,2,3,4,5,6];
     for ( var i = 0,len = arr.length; i <len; i++){
        console.log(arr[i]);
    }
    

    while循环

    类似普通for循环,只是语句分散写开

    let num = 1
    while(num < 10) {
        console.log(num)
        num ++
    }
    

    do-while循环

    类似普通for循环,只是语句分散写开

    let num = 1
    do{
        console.log(num)
        num ++
    }while(num < 10)
    

    for-of循环

    具有Symbol.iterator属性,就可以使用for...of遍历,返回的是值不是索引,可以响应break,continue,return语句

    var array1 = [1, 30, 39, 49];
    for(let item of array1) {
    console.log(item)
    }
    
    输出:
    > 1
    > 30
    > 39
    > 49
    

    for-in循环

    主要用于遍历对象for(key in object),key是字符串类型,能读取对象自身上面的成员属性,也会读出原型链遍历出的对象的原型属性。如果只使用当前对象本身的属性,使用hasOwnPropertygetOwnPropertyNames()判断是不是当前对象的属性
    迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。因此当迭代访问顺序很重要的数组时,最好用整数索引去进行for循环(或者使用 Array.prototype.forEach() 或 for...of 循环)

    var array1 = [1, 30, 39, 49];
    for(let item of array1) {
    console.log(item)
    }
    
    输出:
    > 1
    > 30
    > 39
    > 49
    

    遍历对象

    除去for-in之外,还可以以使用Object.keys(),Object.getOwnPropertyNames()获取对象的属性数组,然后遍历该属性数组,相关例子如下:

    var obj = {'0':'a','1':'b','2':'c'};
    Object.getOwnPropertyNames(obj).forEach(function(key){
        console.log(key,obj[key]);
    });
    
    Object.keys(obj).forEach(function(key){
         console.log(key,obj[key]);
    });
    

    相关文章

      网友评论

          本文标题:js遍历数组和对象

          本文链接:https://www.haomeiwen.com/subject/rzjehctx.html