のコールバック関数にArray.mapは3つのパラメーターがあります。
リンクした同じMozillaページから:
コールバックは3つの引数で呼び出されます:要素の値、要素のインデックス、およびトラバースされるArrayオブジェクト。
したがって、parseInt実際に2つの引数が必要な関数を呼び出す場合、2番目の引数は要素のインデックスになります。
この場合、parseInt基数0、1、2を順番に呼び出してしまいました。1つ目は、パラメーターを指定しない場合と同じであるため、入力に基づいてデフォルト設定されます(この場合は10を底とする)。基数1は不可能な数の基数であり、3は基数2では有効な数ではありません。
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
したがって、この場合は、ラッパー関数が必要です。
['1','2','3'].map(function(num) { return parseInt(num, 10); });
またはES2015 +構文:
['1','2','3'].map(num => parseInt(num, 10));
(どちらの場合も、示されているように基数を明示的に指定するparseIntことをお勧めします。それ以外の場合、入力に基づいて基数を推測します。一部の古いブラウザでは、先頭の0が8進数を推測し、問題が発生する傾向がありました。文字列がで始まる場合は16進数を推測し0xます。)
.map(parseFloat)1つのパラメーターしかとらないため、使用してください。