Array.prototype.values()

values() メソッドは、配列の各インデックスの値を含む新しい Array Iterator オブジェクトを返します。

構文

arr.values()

返値

新しい Array iterator オブジェクトです。

for...of ループを用いた反復処理

var arr = ['a', 'b', 'c', 'd', 'e'];
var iterator = arr.values();

for (let letter of iterator) {
  console.log(letter);
}  //"a" "b" "c" "d"

Array.prototype.valuesArray.prototype[Symbol.iterator] の既定の実装です。

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

.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 } 
iteraror.next().value;         // undefined 

一度だけの使用: array iterator オブジェクトは一度だけの使用またはテンポラリオブジェクトです

例:

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 

理由: next().done=true または currentIndex>lengthfor..of の終了条件だからです。反復処理プロトコルを参照して下さい。

: Array Iterator オブジェクトには値が格納されていません。代わりに、その作成に使用された配列のアドレスが格納されているため、その配列に格納されている値に依存します。

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"

配列内の値が変化した場合は、 Array Iterator オブジェクトの値も変化します。

仕様書

仕様書 状態 備考
ECMAScript Latest Draft (ECMA-262)
Array.prototype.values の定義
ドラフト
ECMAScript 2015 (6th Edition, ECMA-262)
Array.prototype.values の定義
標準 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
valuesChrome 完全対応 66Edge 完全対応 12Firefox 完全対応 60IE 未対応 なしOpera 完全対応 53Safari 完全対応 9WebView Android 完全対応 66Chrome Android 完全対応 66Firefox Android 完全対応 60Opera Android 完全対応 47Safari iOS 完全対応 9Samsung Internet Android 完全対応 9.0nodejs 完全対応 10.9.0
完全対応 10.9.0
完全対応 6.5.0
補足 無効
補足 The --harmony-array-prototype-values flag is required; the --harmony flag is not sufficient in this case.
無効 From version 6.5.0: this feature is behind the --harmony-array-prototype-values runtime flag.
未対応 0.12 — 4.0.0

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報