私の質問は、JavaScriptの配列のmap
メソッドに関するものです。
処理中の配列の現在の要素のインデックスである2番目の引数を取る関数をそれに渡すことができますが、...目的は何ですか?あなたがそれをするとき何が起こり、そうしないときの違いは何ですか?
この機能を何に使用しますか?
現在のアイテムのインデックスは常にコールバック関数に渡されます。関数で宣言しない場合の唯一の違いは、名前でアクセスできないことです。
例:
[1,2,3].map(function(o, i){
console.log(i);
return 0;
});
[1,2,3].map(function(o){
console.log(arguments[1]); // it's still there
return 0;
});
出力:
0
1
2
0
1
2
要素のインデックスが重要な場合があります。たとえば、次のマップは2番目の要素をすべて0に置き換えます。
var a = [1, 2, 3, 4, 5, 6];
var b = a.map(function(el, index) {
return index % 2 ? 0 : el;
});
console.log(b);
出力:
[1, 0, 3, 0, 5, 0]
map
関数の説明は次のとおりです。
arr.map(callback[, thisArg])
callback
3つの引数を使用して、新しい配列の要素を生成する関数:
currentValue
配列で処理されている現在の要素。
index
配列で処理されている現在の要素のインデックス。
array
配列マップが要求されました。
Map関数は、コールバック関数を引数として取ります(編集前の質問で最初に述べたように、引数としてインデックスを取りません)。コールバック関数にはパラメータとしてインデックスがあります。コールバックは自動的に呼び出されるため、自分でインデックスを提供することはありません。現在の値のみが必要な場合は、他のパラメーターを省略できます。