ES 5新規配列の実現方法
1、静的方法isAray():
map方法は、配列の全メンバをパラメータ関数に順次入力し、その実行結果を新しい配列にして返します。
forEach法はmap法と似ています。配列の全メンバーに対して順次パラメータ関数を実行します。しかし、forEachメソッドは値を返さず、データを操作するだけです。つまり、行列遍歴の目的が戻り値を得るためであるならば、map法を使用し、そうでなければforEach法を使用する。
forEachの使い方はmap法と一致しています。パラメータは3つのパラメータを同じように受け入れます。現在の値、現在の位置、配列全体です。
filter方法は、配列メンバーをフィルタリングし、条件を満たすメンバーが新しい配列を構成して戻ります。
そのパラメータは関数であり、すべての配列のメンバは順次関数を実行し、結果はtrueのメンバは新しい配列を構成して戻ります。
この方法は元の配列を変更しません。
filter法のパラメータ関数は,現在のメンバ,現在の位置および全配列の三つのパラメータを受け入れることができる。
reduce方法は、順番に配列の各メンバーを処理し、最終的には1つの値に累積する。レデュースは左から右へ(最初のメンバーから最後のメンバーまで)処理します。
reduce法のパラメータは次の二つのパラメータを受け入れる関数である。
1累積変数は、デフォルトでは配列の最初のメンバです。
2現在の変数は、デフォルトは配列の第二のメンバーです。
最初の実行は、aは配列の最初のメンバ#1であり、bは配列の第二のメンバ#2である。
第二の実行は、aは前のラウンドの戻り値3、bは第三のメンバー3である。
第三の実行は、aは前のラウンドの戻り値6、bは第四のメンバ4である。
第4回の実行は、aは前のラウンドの戻り値10、bは第5のメンバ5である。
これまですべてのメンバーが遍歴してきましたが、方法全体の戻り値は最終ラウンドの戻り値15です。
6、indexOf()、lastIndexOf()方法:
indexOf法は、与えられた要素が配列において初めて現れる位置を返し、結果はマッチング開始の位置を返します。出現しない場合は-1を返します。
lastIndexOf方法の使い方はindexOf方法と一致しています。主な違いはlastIndexOfが尻尾からマッチングします。indexOfは頭からマッチングします。
また、lastIndexOfの第二のパラメータ表現は、その位置から前へ整合する。
ここで、ES 5の新規配列の実現方法についての記事を紹介します。より多くの関連ES 5の配列内容を紹介します。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
Array.isArray()
// Array.isArray , 。
// typeof 。
var arr = [1, 2, 3];
console.log(typeof arr); // "object"
Array.isArray(arr) // true
// ,typeof Object,
// Array.isArray 。
2、インスタンス(オブジェクト)方法map():map方法は、配列の全メンバをパラメータ関数に順次入力し、その実行結果を新しい配列にして返します。
var numbers = [1, 2, 3];
var res = numbers.map(function (n) {
return n + 1;
});
res: // [2, 3, 4]
numbers:// [1, 2, 3]
// ,numbers ,
// , 。
map法はパラメータとして関数を受け入れた。この関数が呼び出されると、mapメソッドは、現在の値、現在の位置、配列自体の3つのパラメータを入力します。
[1, 2, 3].map(function(elem, index, arr) {
return elem * index;
});
// [0, 2, 6]
// ,map ,elem
// ,index ,arr ([1, 2, 3])
3、forEach():forEach法はmap法と似ています。配列の全メンバーに対して順次パラメータ関数を実行します。しかし、forEachメソッドは値を返さず、データを操作するだけです。つまり、行列遍歴の目的が戻り値を得るためであるならば、map法を使用し、そうでなければforEach法を使用する。
forEachの使い方はmap法と一致しています。パラメータは3つのパラメータを同じように受け入れます。現在の値、現在の位置、配列全体です。
function log(elem, index, array) {
console.log('[' + index + '] = ' + elem );
}
[2, 5, 9].forEach(log);
// [0] = 2
// [1] = 5
// [2] = 9
注意:forEachメソッドは実行を中断することができません。いつもメンバー全員を巡回します。条件に合うことを望む場合は、巡回を中断し、forループを使用します。
var arr = [1, 2, 3];
for (var i = 0; i < arr.length; i++) {
if (arr[i] === 2) break;
console.log(arr[i]); // 1
}
4、filter():filter方法は、配列メンバーをフィルタリングし、条件を満たすメンバーが新しい配列を構成して戻ります。
そのパラメータは関数であり、すべての配列のメンバは順次関数を実行し、結果はtrueのメンバは新しい配列を構成して戻ります。
この方法は元の配列を変更しません。
filter法のパラメータ関数は,現在のメンバ,現在の位置および全配列の三つのパラメータを受け入れることができる。
// filter : , 。
var res = [1, 2, 3, 4, 5].filter(function (elem, index, arr) {
return index % 2 === 0;
});
console.log(res); // [1, 3, 5]
// 。
5、レデュース()reduce方法は、順番に配列の各メンバーを処理し、最終的には1つの値に累積する。レデュースは左から右へ(最初のメンバーから最後のメンバーまで)処理します。
reduce法のパラメータは次の二つのパラメータを受け入れる関数である。
1累積変数は、デフォルトでは配列の最初のメンバです。
2現在の変数は、デフォルトは配列の第二のメンバーです。
var res = [1, 2, 3, 4, 5].reduce(function (a, b) {
console.log(a, b);
return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
res// :15
上のコードの中で、reduce方法は配列の全メンバーの和を求めます。最初の実行は、aは配列の最初のメンバ#1であり、bは配列の第二のメンバ#2である。
第二の実行は、aは前のラウンドの戻り値3、bは第三のメンバー3である。
第三の実行は、aは前のラウンドの戻り値6、bは第四のメンバ4である。
第4回の実行は、aは前のラウンドの戻り値10、bは第5のメンバ5である。
これまですべてのメンバーが遍歴してきましたが、方法全体の戻り値は最終ラウンドの戻り値15です。
6、indexOf()、lastIndexOf()方法:
indexOf法は、与えられた要素が配列において初めて現れる位置を返し、結果はマッチング開始の位置を返します。出現しない場合は-1を返します。
var a = ['a', 'b', 'c'];
a.indexOf('b'); // 1
a.indexOf('y'); // -1
// indexOf , 。
['a', 'b', 'c'].indexOf('a', 1); // -1
// 1 a, -1, 。
lastIndexOf方法は、所与の要素が配列の中で最後に出現した位置を返します。出現しない場合は-1を返します。lastIndexOf方法の使い方はindexOf方法と一致しています。主な違いはlastIndexOfが尻尾からマッチングします。indexOfは頭からマッチングします。
また、lastIndexOfの第二のパラメータ表現は、その位置から前へ整合する。
var a = [2, 5, 9, 2];
a.lastIndexOf(2); // 3
a.lastIndexOf(7); // -1
この2つの方法はNaNの位置を検索するために使用できません。つまり、配列メンバーがNaNを含むかどうかは判断できません。以下のとおりです
[NaN].indexOf(NaN); // -1
[NaN].lastIndexOf(NaN);// -1
これはこの二つの方法の内部で、厳密に等しい演算子(====)を使って比較を行うので、NaNは、比較的に残忍で、それは自分さえ等しくなくて、唯一の一つが自身の値に等しくないです!ここで、ES 5の新規配列の実現方法についての記事を紹介します。より多くの関連ES 5の配列内容を紹介します。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。