• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Array.prototype.values()

    values()方法返回一个新的Array Iterator对象,该对象包含数组每个索引的值

    语法

    arr.values()
    

    返回值

    一个新的Array迭代对象。

    示例

    使用 for...of循环进行迭代

    let arr = ['w', 'y', 'k', 'o', 'p'];
    let eArr = arr.values();
    // 您的浏览器必须支持 for..of 循环
    // 以及 let —— 将变量作用域限定在 for 循环中
    for (let letter of eArr) {
      console.log(letter);
    }
    

    Array.prototype.values is default implementation of Array.prototype[Symbol.iterator].

    Array.prototype.values === Array.prototype[Symbol.iterator]   
    

    使用.next()迭代

    var arr = ['a', 'b', 'c', 'd', 'e'];
    var iterator = arr.values(); 
    iterator.next();               // Object { value: "a", done: false }
    iterator.next().value;         // "b"
    iterator.next()["value"];      // "c"
    iterator.next();               // Object { value: "d", done: false }
    iterator.next();               // Object { value: "e", done: false }
    iterator.next();               // Object { value: undefined, done: true } 
    iteraroe.next().value;         // undefined
    

    One-use: the array iterator object is one use or temporary object

    example:

    var arr = ['a', 'b', 'c', 'd', 'e'];
     var iterator = arr.values();
     for (let letter of iterator) {
     console.log(letter); 
    } //"a" "b" "c" "d"
    for (let letter of iterator) {
    console.log(letter);
    } // undefined
    

    reason: When next().done=true or currentIndex>length the for..of loop end. see Iteration protocols.

    Value: there is no values stored in the array Iterator object,instead its store the adresse of the array used in creation of it so its depend on the values stored on that array.

    var arr = ['a', 'b', 'c', 'd', 'e']; 
    var iterator = arr.values();
    console.log(iterator);        // Array Iterator {  }
    iterator.next().value;        // "a"
    arr[1]='n';                 
    iterator.next().value;        //  "n"
    

    if the values in the array changed the array iterator object values change too

    TODO: please write about why we need it, use cases.