【十】iterable
2430 ワード
巡回Arrayは下付きループを採用でき,巡回MapとSetは下付きループを使用できない.集合型を統一するために、ES 6規格は新しいiterable型を導入し、Array、Map、およびSetはiterable型に属する.iterableタイプのセットは新しいforで...ofループが遍歴する.for...ofループはES 6が導入した新しい構文で、ブラウザがサポートしているかどうかをテストします.
forで...ofループループ集合、使用法は以下の通りです.
for ... ofサイクルとfor...inサイクルの違いは何ですか?
for ... Inループは、履歴に問題が残っているため、実際にはオブジェクトの属性名を巡回します.Array配列は、実際にはオブジェクトでもあり、各要素のインデックスは属性とみなされます.Arrayオブジェクトに追加のプロパティを手動で追加すると、for...Inサイクルは予想外の効果をもたらす:
for ... Inループはnameを含むが,Arrayのlength属性は含まれない.for ... ofループは、これらの問題を完全に修正し、集合自体の要素のみをループします.
新しいforを導入する理由ですofサイクル.しかし、より良い方法は、iterableに内蔵されたforEachメソッドを直接使用することであり、反復するたびに自動的に関数をコールバックする関数を受け入れます.Arrayを例にとると、
なお、forEach()の方法はES 5である.1標準で導入されたもので、ブラウザがサポートされているかどうかをテストする必要があります.SetはArrayと似ていますが、Setにはインデックスがありません.そのため、コールバック関数の最初の2つのパラメータは要素自体です.
Mapのコールバック関数パラメータはvalue、key、mapの順になります.
いくつかのパラメータに興味がない場合は、JavaScriptの関数呼び出しはパラメータが一致する必要がないため、無視できます.たとえば、Arrayのelementを取得するだけです.
'use strict';
var a = [1, 2, 3];
for (var x of a) {
}
alert(' for ... of');
forで...ofループループ集合、使用法は以下の通りです.
var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // Array
alert(x);
}
for (var x of s ) { // Set
alert(x);
}
for (var x of m) { // Map
alert(x[0] + '=' + x[1]);
}
for ... ofサイクルとfor...inサイクルの違いは何ですか?
for ... Inループは、履歴に問題が残っているため、実際にはオブジェクトの属性名を巡回します.Array配列は、実際にはオブジェクトでもあり、各要素のインデックスは属性とみなされます.Arrayオブジェクトに追加のプロパティを手動で追加すると、for...Inサイクルは予想外の効果をもたらす:
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
alert(x); // '0', '1', '2', 'name'
}
for ... Inループはnameを含むが,Arrayのlength属性は含まれない.for ... ofループは、これらの問題を完全に修正し、集合自体の要素のみをループします.
var a = ['A', 'B', 'C'];
a.name = 'Hello' ;
for (var x of a) {
alert(x); // 'A', 'B', 'C'
}
新しいforを導入する理由ですofサイクル.しかし、より良い方法は、iterableに内蔵されたforEachメソッドを直接使用することであり、反復するたびに自動的に関数をコールバックする関数を受け入れます.Arrayを例にとると、
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element:
// index:
// array: Array
alert(element);
});
なお、forEach()の方法はES 5である.1標準で導入されたもので、ブラウザがサポートされているかどうかをテストする必要があります.SetはArrayと似ていますが、Setにはインデックスがありません.そのため、コールバック関数の最初の2つのパラメータは要素自体です.
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
alert(element);
});
Mapのコールバック関数パラメータはvalue、key、mapの順になります.
var m = new Map([[1, 'x'], [2, 'y'], [ 3, 'z']]);
m.forEach(function (value, key, map) {
alert(value);
});
いくつかのパラメータに興味がない場合は、JavaScriptの関数呼び出しはパラメータが一致する必要がないため、無視できます.たとえば、Arrayのelementを取得するだけです.
var a = ['A', 'B', 'C'];
a.forEach(funciton (element) {
alert(element);
});