Javascript之數組遍歷

1、遍歷數組的幾種方式javascript

     一、for...in遍歷數組,會遍歷數組的索引和數組原型上的對象java

     二、for循環直接遍歷數組

     三、迭代器:forEach(遍歷數組中全部的值,並忽略回調函數返回的值)、every(一直運行直到返回false)、some(一直運行直到返回true)等遍歷閉包

     四、for...of直接遍歷數組中的值函數

          對於for...of,只要是能夠迭代的對象均可以用for...of來遍歷,也就是內部實現了iterator的對象this

var arr = ["1", "4", "7", "9", "11"]
for(v of arr) {
  console.log(v)
}

   數組中內置@@iterator對象,使用方式以下:對象

var arr = [1, 2, 4]
var it = arr[Symbol.iterator]()
it.next()//{value: 1, done: false}
it.next()//{value: 2, done: false}
it.next()//{value: 4, done: true}

  普通對象中沒有實現@@iterator對象,可是咱們能夠給對象自定義@@iteratorblog

      利用Object.defineProperty來給對象中的屬性定義特性,利用閉包來實現值的移位。索引

var obj = {
    a: '1',
    b: '5'
}

Object.defineProperty(obj, Symbol.iterator, {
  enumerable: false,
  writable: false,
  configurable: true,
  value: function() {
      var o = this;
      var idx = 0;
      var ks = Object.keys(o)     
      return {
         next: function() {
            return {
               value: o[ks[idx++]],
               done: (idx >= ks.length)
            }
         }
      }
  }
  
})

var it = obj[Symbol.iterator]()
it.next()
it.next()

相關文章
相關標籤/搜索