ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で `Array.map()` と `parseInt()` を併用すると予期しない結果が生じるのはなぜですか?
parseInt を使用した Array.map() の数値の解析
JavaScript では、Array.map() 関数はコールバック関数をそれぞれの数値に適用します。配列の要素。ただし、このコンテキストで parseInt() 関数を使用すると、予期しない結果が生じる可能性があります。
提供された例では:
['1','2','3'].map(parseInt);
parseInt() は [1, NaN, NaN] を生成します。予想される [1、2、3] の代わりに。この動作は、parseInt() が 2 つの引数、解析する文字列とオプションの基数 (ベース) を取るために発生します。
Array.map() コールバック関数は、要素の値、インデックス、および要素の 3 つのパラメータを提供します。配列自体。基数を指定せずに parseInt() を使用する場合、2 番目のパラメーター (インデックス) が基数として使用されます。
['1','2','3'] の場合、parseInt で使用される基数の値() は 0、1、2 になります。基数 1 は無効で、3 はバイナリ (基数 2) で表現できないため、解析は失敗し、次の結果が得られます。 NaN.
この動作を修正するには、ラッパー関数内で parseInt() に明示的な基数を指定します:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
または、ES2015 構文を使用します:
['1','2','3'].map(num => parseInt(num, 10));
基数 10 を指定することで、parseInt() が正しく解析できるようになります。文字列を整数に変換します。
以上がJavaScript で `Array.map()` と `parseInt()` を併用すると予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。