JavaScript: JavaScript ユーティリティメソッド

最終更新:2026-10-13

型変換について学んできたところで、毎日使うユーティリティメソッドを一挙に学びましょう。スイスアーミーナイフのようなものです。それぞれ単純ですが、必要な時にはどれも欠かせません。

関連するグローバルメソッド:Array.isArray() Number.isNaN() Math.trunc parseFloat Number() toString parseInt toFixed typeof

1. 便利なユーティリティメソッド

文字列の先頭から数値を解析し、最初の非数値文字で停止します。

HTML
<script>
console.log(parseInt("42px"));      // 42
console.log(parseInt("3.14"));      // 3(整数部分のみ)
console.log(parseFloat("3.14"));    // 3.14
console.log(parseFloat("3.14abc")); // 3.14
console.log(parseInt("abc42"));     // NaN(数値で始まらない)
</script>

parseInt の第2引数は基数を指定します。

HTML
<script>
console.log(parseInt("FF", 16));  // 255(16進数)
console.log(parseInt("10", 2));   // 2(2進数)
</script>

落とし穴:基数を指定しないと、0x で始まる文字列は16進数として解析されます。常に第2引数に 10 を渡してください。

(2) isNaN と Number.isNaN

メソッド 動作
isNaN(value) まず数値に変換してから NaN かどうかをチェック
Number.isNaN(value) 値が NaN かを厳密にチェック(変換なし)
HTML
<script>
console.log(isNaN("hello"));         // true(Number("hello") → NaN、その後 true)
console.log(Number.isNaN("hello"));  // false("hello" 自体は NaN ではない)
console.log(isNaN(undefined));       // true
console.log(Number.isNaN(undefined));// false
</script>

結論:Number.isNaN() を使いましょう。暗黙的に型を変換しません。

(3) toFixed

小数点以下の桁数を制御し、文字列を返します。

HTML
<script>
console.log((3.14159).toFixed(2));  // "3.14"
console.log((3.1).toFixed(4));      // "3.1000"(ゼロでパディング)
console.log((3.145).toFixed(2));    // "3.14" または "3.15"(浮動小数点精度の問題。丸め保証なし)
</script>

toFixed は文字列を返すため、計算に使う場合は Number() で数値に戻してください。

(4) toString

数値を文字列に変換します。基数の指定にも対応しています。

HTML
<script>
console.log((255).toString());      // "255"
console.log((255).toString(16));    // "ff"
console.log((8).toString(2));       // "1000"
console.log((100).toString(8));     // "144"
</script>

真偽値と配列にも toString があります。

HTML
<script>
console.log(true.toString());       // "true"
console.log([1,2,3].toString());    // "1,2,3"
</script>

(5) Number.isInteger

値が整数かどうかを判定します。

HTML
<script>
console.log(Number.isInteger(5));      // true
console.log(Number.isInteger(5.0));    // true(5.0 は単に 5)
console.log(Number.isInteger(5.5));    // false
console.log(Number.isInteger("5"));    // false(文字列は整数ではない)
console.log(Number.isInteger(NaN));    // false
</script>

(6) Math.trunc と Math.sign

Math.trunc は小数部分を単純に切り捨てます(丸めなし)。

HTML
<script>
console.log(Math.trunc(4.9));    // 4
console.log(Math.trunc(-4.9));   // -4
console.log(Math.trunc(4.1));    // 4
</script>

Math.sign は数値の符号を返します。

HTML
<script>
console.log(Math.sign(5));       // 1
console.log(Math.sign(-5));      // -1
console.log(Math.sign(0));       // 0
console.log(Math.sign(-0));      // -0
console.log(Math.sign(NaN));     // NaN
</script>

(7) typeof の限界

typeof は通常の型チェックに使えますが、いくつかの古典的な落とし穴があります。

HTML
<script>
console.log(typeof 42);           // "number"  ✅
console.log(typeof "hello");      // "string"  ✅
console.log(typeof true);         // "boolean" ✅
console.log(typeof undefined);    // "undefined" ✅
console.log(typeof null);         // "object"  ❌ これは歴史的なバグ!
console.log(typeof []);           // "object"  ❌ 配列もオブジェクト
console.log(typeof {});           // "object"  ✅
console.log(typeof function(){}); // "function" ✅
</script>

typeof null === "object" は JavaScript の「ベテランバグ」です。1995年以来存在し、修正することはできません。null のチェックには value === null を使いましょう。配列のチェックには Array.isArray() を使いましょう。


(8) サンプル:価格計算機

▶ 試してみよう

(9) サンプル:入力検証ツール

▶ 試してみよう

(10) サンプル:typeof と型チェック

▶ 試してみよう

関連するグローバルメソッド:Array.isArray() Number.isNaN() Math.trunc parseFloat Number() toString parseInt toFixed typeof

❓ よくある質問

Q toFixed が丸めを保証しないのはなぜですか?
A 浮動小数点数は2進数で正確に表現できないためです。(0.1 + 0.2).toFixed(1) は "0.3" になるとは限りません。正確な丸めには、toFixed を呼び出す前に Math.round(num * 100) / 100 を使いましょう。
Q parseFloat と Number() の違いは何ですか?
A parseFloat("42px") は 42 を返します(先頭から解析し、最初の非数値文字で停止)。一方、Number("42px") は NaN を返します(文字列全体を解析し、非数値文字があれば失敗)。混合テキストから数値を抽出するには parseFloat を、厳密な検証には Number() を使いましょう。

📖 まとめ

📝 練習問題

  1. parseChineseNumber(str) 関数を書きましょう。"3.5元" → 3.5、"100人" → 100、"約200" → 200 のように文字列から数値を解析してください(parseFloat を使用)。プレーンテキストの場合は NaN を返すように処理してください。
  2. formatMoney(amount) 関数を書きましょう。数値を引数に取り、カンマ区切りの桁区切りと小数点以下2桁の文字列を返してください。例:1234567.89 → "1,234,567.89"(ヒント:toFixed と toString を配列メソッドと一緒に使う)。
  3. getType(value) 関数を書きましょう。typeof の欠点を補完し、null には "null" を、配列には "array" を、それ以外は typeof の結果を返してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%