ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で `Array.map()` と `parseInt()` を併用すると予期しない結果が生じるのはなぜですか?

JavaScript で `Array.map()` と `parseInt()` を併用すると予期しない結果が生じるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-17 11:10:27151ブラウズ

Why Does `Array.map()` with `parseInt()` Produce Unexpected Results in JavaScript?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。