date関数の不思議!時間がズレる現象を5つのステップで解決JavaScriptで数値を判定する方法10選JS2024.05.30この記事は約17分で読めます。いただけます】この記事では、プログラムの基礎知識を前提に話を進めています。説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。○数値判定を使ったバリデーションまとめ※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)●JavaScriptで数値を判定するとはJavaScriptを使った開発業務に携わり始めたばかりの若手エンジニアの皆さん、数値判定で悩んだことはありませんか?正確に数値を判定することは、バグの少ないコードを書くために欠かせないスキルです。○数値判定が必要な場面ユーザー入力値のバリデーションや、APIレスポンスのデータ型チェックなど、数値を扱うシーンは多岐にわたります。年齢入力フォームで数字以外の値が入力された場合、エラーメッセージを表示する必要がありますよね。こんな時、数値判定の知識があれば、簡単に対処できます。数値判定の方法は、大きく分けて次の4つがあります。正規表現を使った判定parseFloatとisFiniteの組み合わせこの方法を使い分けることで、様々な場面で数値判定を行うことができます。これから、それぞれの方法を詳しく見ていきましょう。数値判定のスキルが身につくはずです。●型を使った数値判定JavaScriptで数値を判定する方法の1つに、型を使った判定があります。型判定では、変数のデータ型を調べることで、その値が数値かどうかを判断します。○サンプルコード1:typeof演算子typeof演算子は、変数のデータ型を文字列で返してくれる便利な演算子です。数値の場合は、”number”という文字列が返ってきます。"string"上記のコードでは、numは数値型、strは文字列型であることがわかります。typeof演算子を使えば、簡単に変数のデータ型をチェックできますね。typeof演算子にはちょっとした落とし穴があります。それは、NaNに対してもtypeof演算子は”number”を返すということです。Numberの略で、数値ではないことを表す特殊な値です。typeof演算子ではNaNを数値型と判定してしまうので、注意が必要ですね。NaNについては、後ほど詳しく説明します。○サンプルコード2:constructorプロパティもう1つの型判定の方法は、constructorプロパティを使う方法です。constructorプロパティは、そのオブジェクトのコンストラクタ関数を参照します。true上記のコードでは、numのコンストラクタ関数はNumber、strのコンストラクタ関数はStringであることを確認しています。この方法なら、NaNも正しく判定できます。trueただ、constructorプロパティを使った判定は、typeof演算子に比べると少し冗長な書き方になってしまいます。状況に応じて、適切な方法を選ぶことが大切ですね。●数値メソッドを使った判定JavaScriptには、数値かどうかを判定するための便利なメソッドがいくつか用意されています。これらのメソッドを使えば、型判定よりも簡潔に数値判定を行うことができます。○サンプルコード3:isNaN()isNaN()は、与えられた値がNaNかどうかを判定するメソッドです。NaNは、数値ではないことを表す特殊な値ですが、typeof演算子では数値型と判定されてしまいます。そんな時は、isNaN()を使ってNaNかどうかを確認しましょう。true上記のコードでは、数値の42はfalse、文字列の”42′′もfalseになっています。文字列の”hello”とNaNはtrueになりますね。isNaN()は数値に変換できない値に対してtrueを返すのです。isNaN()にはちょっとした落とし穴があります。それは、文字列の”42′′のように、数値に変換できる文字列に対してもfalseを返すということです。これでは、文字列が混ざった値をきちんと判定できません。○サンプルコード4:Number.isNaN()そこで登場するのが、Number.isNaN()です。これは、isNaN()の問題点を改良したメソッドで、より厳密にNaNかどうかを判定してくれます。trueNumber.isNaN()は、NaNに対してのみtrueを返し、他の値に対してはすべてfalseを返します。これなら、文字列が混ざった値も正しく判定できますね。○サンプルコード5:isFinite()isFinite()は、与えられた値が有限数かどうかを判定するメソッドです。有限数とは、無限大ではない数値のことを指します。false上記のコードでは、数値の42と文字列の”42′′はtrue、文字列の”hello”とInfinity、NaNはfalseになっています。isFinite()は、数値に変換できる値に対してtrueを返し、数値に変換できない値や無限大に対してはfalseを返すのです。●正規表現を使った数値判定JavaScriptの数値判定には、正規表現を使う方法もあります。正規表現を使えば、文字列のパターンを柔軟にマッチングできるので、より細かな条件で数値を判定できます。○サンプルコード6:単純な数値パターンまずは、単純な数値のパターンを正規表現で表現してみましょう。数字だけで構成される文字列を判定するには、次のような正規表現を使います。falseこの正規表現では、^は文字列の先頭、\d+は1つ以上の数字、$は文字列の末尾を表しています。先頭から末尾まで数字だけで構成される文字列にマッチするのです。上記のコードでは、”42′′はパターンにマッチするのでtrue、”42.5′′と”hello”はマッチしないのでfalseになります。この正規表現では小数点や符号を含む数値は判定できません。○サンプルコード7:小数や符号も考慮したパターン小数点や符号を含む数値を判定するには、正規表現をもう少し複雑にする必要があります。次のような正規表現を使ってみましょう。falseこの正規表現では、[-+]?は符号が0個または1個、\d+は1つ以上の数字、(\.\d+)?は小数点とその後の数字が0個または1個を表しています。符号と整数部は必須で、小数部は任意という条件になります。上記のコードでは、”42′′、”-42′′、”+42′′、”42.5′′はパターンにマッチするのでtrue、”hello”はマッチしないのでfalseになります。この正規表現なら、多くの数値形式を判定できますね。●parseFloatとisFiniteの組み合わせJavaScriptの数値判定には、parseFloatとisFiniteを組み合わせる方法もあります。parseFloatは文字列を浮動小数点数に変換し、isFiniteは変換結果が有限数かどうかを判定します。○サンプルコード8:文字列から数値への変換と判定parseFloatとisFiniteを使った数値判定の例を見てみましょう。falseこの例では、isNumber関数の中でparseFloatとisFiniteを組み合わせています。parseFloatで文字列を数値に変換し、その結果をisFiniteで判定しているのです。上記のコードでは、”42′′、”-42′′、”42.5′′はtrueになり、”hello”と空文字列””はfalseになります。この方法なら、数値形式の文字列を正しく判定できますね。parseFloatとisFiniteの組み合わせにはちょっとした落とし穴があります。それは、文字列の先頭が数値で始まる場合、parseFloatが数値部分だけを取り出してしまうということです。false上記のコードでは、”42px”はtrueになります。これは、parseFloatが”42px”の先頭にある数値部分”42′′だけを取り出し、isFiniteがそれを有限数と判定するためです。”hello42′′はfalseになります。parseFloatとisFiniteの組み合わせは、数値形式の文字列を判定するのに便利な方法です。文字列の先頭が数値で始まる場合の挙動には注意が必要ですね。●NaNについて理解するNaNという値に悩まされたことはありませんか?数値判定を行う際、NaNは厄介な存在ですよね。Number」の略で、数値ではないことを表す特殊な値です。数値として解釈できない計算を行った場合、その結果はNaNになります。NaN上記のコードでは、負の数の平方根、0を0で割る計算、数値に変換できない文字列をparseIntで変換しようとした場合、すべてNaNになっています。NaNは数値ではありませんが、typeof演算子ではnumberと判定されてしまいます。これは、NaNが数値型に分類されているためです。"number"また、NaNは自分自身と等しくない唯一の値です。これは、NaNを判定する際に役立ちます。false○サンプルコード9:NaNの判定NaNを判定するには、isNaN関数を使う方法が一般的です。false上記のコードでは、NaNと数値に変換できない文字列”hello”に対してisNaNはtrueを返し、数値の42に対してはfalseを返しています。isNaN関数は、渡された値を数値に変換できるかどうかを判定するため、数値に変換できる文字列に対してもfalseを返してしまいます。falseより厳密にNaNを判定するには、Number.isNaN関数を使います。falseNumber.isNaN関数は、渡された値がNaNかどうかを判定します。NaNに対してのみtrueを返し、他の値に対してはすべてfalseを返すのです。●数値判定のよくあるエラーと対処法JavaScriptを使った開発業務で数値判定を行う際、思わぬエラーに遭遇することがありますよね。ここでは、数値判定でよく見られるエラーとその対処法について見ていきましょう。文字列の”0′′と数値の0を混同することがよくあるエラーの1つです。ユーザー入力値が文字列で渡されてくる場合、”0′′と0を同じように扱ってしまうと、意図しない結果になることがあります。console.log("ユーザーは0以外を入力しました");}上記のコードでは、ユーザー入力値が文字列の”0′′であるにもかかわらず、”ユーザーは0以外を入力しました”と表示されてしまいます。これは、===演算子が型の違いを厳密にチェックするためです。この問題を解決するには、比較する前に文字列を数値に変換するか、==演算子を使って型の違いを無視して比較する必要があります。console.log("ユーザーは0以外を入力しました");}上記のコードでは、Number関数を使ってuserInputを数値に変換してから比較しています。これで、”ユーザーは0を入力しました”と正しく表示されます。○ブール値やnullとの混同ブール値やnullを数値と混同することもエラーの原因になります。次のようなコードを見てみましょう。console.log("isValidは1ではありません");}上記のコードでは、”isValidは1です”と表示されます。これは、==演算子が型の違いを無視して比較するためです。trueは数値の1に、falseは数値の0に変換されるのです。同様に、nullも数値の0と混同されがちです。console.log("valueは0ではありません");}上記のコードでは、”valueは0です”と表示されます。nullは数値の0に変換されるため、==演算子では等しいと判定されるのです。これらの問題を解決するには、===演算子を使って型の違いを厳密にチェックするのが良いでしょう。console.log("valueは0ではありません");}上記のコードでは、いずれも”isValidは1ではありません”と”valueは0ではありません”が表示されます。===演算子を使うことで、型の違いを正しく判定できるのです。●数値判定の応用例JavaScriptでの数値判定は、様々な場面で役立ちます。ここでは、数値判定の応用例として、ユーザー入力値の検証と、数値判定を使ったバリデーションについて見ていきましょう。○サンプルコード10:ユーザー入力値の検証ユーザー入力値の検証は、数値判定の代表的な応用例です。年齢入力フォームで数値以外の値が入力された場合、エラーメッセージを表示する必要がありますよね。有効な年齢を入力してください上記のコードでは、validateAge関数で年齢の検証を行っています。入力値をNumber関数で数値に変換し、isNaNで数値かどうかを判定しています。年齢の有効範囲(0以上120以下)もチェックしています。数値以外の値や、有効範囲外の値が入力された場合は、”有効な年齢を入力してください”というエラーメッセージを表示します。”というメッセージを表示します。このように、数値判定を使ってユーザー入力値の検証を行うことで、不正な入力を防ぎ、アプリケーションの信頼性を高めることができます。○数値判定を使ったバリデーション数値判定は、バリデーションの重要な要素です。バリデーションとは、データの妥当性を確認するプロセスのことで、ユーザー入力値の検証もその一部です。数値判定を使ったバリデーションの例として、次のようなものが挙げられます。数量入力フォームで、負の数や小数が入力されていないかチェックする金額入力フォームで、数値以外の値が入力されていないかチェックする日付入力フォームで、数値以外の値や、存在しない日付が入力されていないかチェックするこれらのバリデーションでは、数値判定メソッドや正規表現を使って、入力値が期待する形式であるかどうかを確認します。数値判定を適切に行うことで、データの整合性を保ち、アプリケーションの信頼性を高めることができるのです。数量入力フォームのバリデーションでは、次のようなコードを使うことができます。有効な数量を入力してください上記のコードでは、validateQuantity関数で数量の検証を行っています。isNaNで数値かどうかを判定し、0未満でないかチェックしています。Number.isIntegerで整数かどうかも確認しています。まとめJavaScriptでの数値判定は、型判定、数値メソッド、正規表現、parseFloatとisFiniteの組み合わせなど、様々な方法があることがわかりました。それぞれの方法には長所と短所がありますが、状況に応じて適切な方法を選ぶことが大切ですね。数値判定でよく見られるエラーとその対処法を理解することで、バグの少ないコードを書けるようになります。数値判定のスキルを磨いて、ユーザー入力値の検証やバリデーションなどに活用していきましょう。JavaScriptでの数値判定に自信を持ち、開発業務を進められるようになることを目指して、これからも学びを深めていきましょう。カスタマイズをご紹介します。JSJavaScriptで属性を変更する7つの方法とサンプルコードJavaScriptで属性を変更する方法を初心者向けにわかりやすく解説。7つの具体的な方法とサンプルコードを通じて理解を深めましょう。JSURLSearchParamsを使ったJavaScriptのクエリ操作方法10選JavaScriptのURLSearchParamsを使ったクエリ文字列操作を、初心者からプロまで役立つ10の方法で徹底解説!HTMLHTMLにおけるリンクの使い方とサンプルコード7選この記事では、HTMLでリンクを作成する方法を初心者にもわかりやすく解説します。詳細なサンプルコードと共に、基本から応用技術まで学べる内容です。CSSCSSで矢印を作成・活用する方法!初心者でもわかる徹底解説!CSSで矢印を作りたい初心者の方必見!矢印の作り方、使い方、応用方法を丁寧に解説します。サンプルコードも用意しており、すぐに試せます!JSJavaScriptの予約語を解説!初心者向けコード例付きJavaScriptの予約語を初心者向けに徹底解説!サンプルコードでわかりやすく実践的な使い方や注意点を学びましょう。Japanシーモア.メニューWebHTMLCSSJavaScriptTypeScriptPHPRubyIoTC++PythonC言語VerilogVHDLAPPJavaKotlinSwiftObjctive-CDartSYSC#COBOLPerlGroovyGo言語ホーム検索トップサイドバ。