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.

Specifications

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Array.prototype.values
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
Array.prototype.values
Draft

规范

规范名称 规范状态 备注
ECMAScript 2015 (6th Edition, ECMA-262)
Array.prototype.values
Standard 首次定义
ECMAScript Latest Draft (ECMA-262)
Array.prototype.values
Draft

浏览器兼容性

Update compatibility data on GitHub
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
values Chrome Full support 66 Edge Full support 12 Firefox Full support 60 IE No support No Opera Full support 53 Safari Full support 9 WebView Android Full support 66 Chrome Android Full support 66 Firefox Android Full support 60 Opera Android Full support 47 Safari iOS Full support 9 Samsung Internet Android Full support 9.0 nodejs Full support 10.9.0
Full support 10.9.0
Full support 6.5.0
Notes Disabled
Notes The --harmony-array-prototype-values flag is required; the --harmony flag is not sufficient in this case.
Disabled From version 6.5.0: this feature is behind the --harmony-array-prototype-values runtime flag.
No support 0.12 — 4.0.0

Legend

Full support  
Full support
No support  
No support
See implementation notes.
See implementation notes.
User must explicitly enable this feature.
User must explicitly enable this feature.

相关链接