zoukankan      html  css  js  c++  java
  • 数组和对象的遍历

    数组一般我们是用for循环来遍历

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

    地球人都能看的懂这段代码,不解释 
    数组有个forEach(_)方法,也是个遍历,没有返回值

    var arr=[1,2,3,4,5]
    arr.forEach(function(item,index){
      console.log(index,item)
    })

    大家都知道,一般我们遍历对象的时候,用的方法是for in

    var obj={
      a:1,
      b:2
    }
    for(var key in obj){
      console.log(key,obj[key])
    }

    数组为什么不用这个方法呢?试试看,会是什么样子的结果

    var arr=[1,2,3,4,5]
    for(var i in arr){
      console.log(i,arr[i])
    }

    这样子是可以的,但是!

    var arr=[1,2,3,4,5]
    arr.name="hello"
    for(var i in arr){
      console.log(arr[i])    //1 2 3 4 5 hello
    }

    结果全部遍历出来了,数组也是对象嘛,也是可以添加属性的,这样子会把自己添加的属性也遍历出来 
    我们可以自己写一个函数,同时实现数组和对象的遍历

    function forEachs(arr, fn) {
      var key
      if (arr instanceof Array) {
      arr.forEach(function(item,index){
        fn(item,index)
      })
      }else if(arr instanceof Object){
        for(key in arr){
          fn(key,arr[key])
        }
      }
    }

    测试一下,先来数组的

    var arr=[1,2,3]
    forEachs(arr,function(item,index){
      console.log(index,item)
    })

    ok,没问题,再来看看对象的

    var obj={
      a:1,
      b:2
    }
    forEachs(obj,function(key,value){
      console.log(key,value)
    })
  • 相关阅读:
    艾氏筛法资料
    CF Soldier and Cards (模拟)
    CF Soldier and Badges (贪心)
    POJ 1308 Is It A Tree? (并查集)
    HDU 1272 小希的迷宫 (并查集)
    HDU 1213 How Many Tables (并查集)
    POJ 1611 The Suspects (并查集)
    POJ 2236 Wireless Network (并查集)
    Iptables-linux服务器做路由转发
    asdf
  • 原文地址:https://www.cnblogs.com/yiyistar/p/6530519.html
Copyright © 2011-2022 走看看