【入門編】 String.prototype.padStart() – JavaScript実践ガイド

こんにちは!フロントエンドの現場を渡り歩いてきた、チーフアーキテクトの私です。

JavaScriptのコードを書いていると、「あともうちょっとだけ、この文字の左側に『0』を足して、桁数を揃えたいんだよなぁ……!」という場面、ものすごくよく遭遇しませんか?

例えば、時計の表示。「9時5分」を「09:05」と綺麗に揃えたいとき。あるいは、商品の管理番号や、ファイルの連番をきれいに並べたいとき。
昔のプログラミングの世界では、これをするためにわざわざ「今の文字の長さを測って、足りない分を計算して、ループを回して足して……」なんていう、ちょっと面倒な処理を書くのが定番でした。ぶっちゃけ、面倒くさいですよね。

でも、安心してください。今のJavaScriptには、そんなモヤモヤをたった一行でスッキリ解決してくれる、とっても頼もしい相棒がいます。それが今回ご紹介する `padStart()`(パッド・スタート) メソッドです!

難しい専門用語はなるべく置いておいて、身近な例えと一緒に、この便利なメソッドの正体に迫っていきましょう。

—

1. `padStart()` ってどんなもの?(お買い物のレシートを想像してみて)

`padStart()` をイメージしやすくするために、身近な例え話をひとつ。

スーパーのレジで発行されるレシートや整理券を思い出してみてください。
「3番」という番号があったとき、機械によっては「003番」と、必ず3桁になるように左側に「0」が埋められて印刷されることがありますよね。

あの「足りない文字数を、指定した文字で左側から埋めていく(Paddingする)」という仕事を、JavaScriptでやってくれるのが `padStart()` なんです。

  • 何文字にしたい?(目標の長さ)
  • 足りないときは、何の文字で埋める?

この2つを教えてあげるだけで、メソッドが自動的に足りない隙間を埋めて、きれいに整えられた新しい文字列を返してくれます。

—

2. 実際にコードを書いて動かしてみよう

百聞は一見に如かず。実際にエディタを叩くつもりで、簡単なコードを見てみましょう。

一番よくあるユースケースである「数字を2桁に揃える(ゼロ埋め)」をやってみます。

// 「5」という数字を、どうしても2桁にしたい!
let minute = “5”;

// padStart(目標の長さ, 埋める文字) を使います
let paddedMinute = minute.padStart(2, “0”);

console.log(paddedMinute); // 結果は 「05」 になります!

すごいでしょう?たったこれだけです。
「`2` 桁にしてね。足りないところは左側から `0` で埋めてね」という命令を、そのまま `padStart(2, “0”)` と書いてあげているだけなんです。

もし最初から2桁だったらどうなるの?

「じゃあ、すでに『12』っていう2桁の数字があったらどうなっちゃうの? 変に削られたりしない?」
そんな心配性なあなた、素晴らしい着眼点です!安心してください、何もしません。

let hour = “12”;

// すでに2桁あるので、そのまま「12」が返ってきます
console.log(hour.padStart(2, “0”)); // 結果: 「12」

`padStart()` は、「目標の長さに達していなければ埋める。すでに目標の長さ(あるいはそれ以上)に達していれば、そのまま何もしない」という、すごく空気が読める優しい仕様になっています。だから、条件分岐をわざわざ書かなくても安全に使えるんですね。

—

3. 実務でよくあるつまずきポイントと注意点

現場で初心者のメンバーからよく相談を受ける「あるあるな落とし穴」を、こっそりシェアしておきますね。ここを知っておくだけで、まわりの開発者にグッと差をつけられますよ。

注意点その1:数値(Number型)のままでは使えない!

これ、本当によくあるエラーです。`padStart()` は「文字列(String)」のためのメソッドです。そのため、数値データにそのまま使おうとすると、JavaScriptから怒られてしまいます。

let count = 5;

// うっかりそのまま使おうとすると……?
// count.padStart(2, “0”);
// 💥 怒られます! 「TypeError: count.padStart is not a function」

【解決策】
使う前に、一度文字列に変換してあげましょう。`String()` で囲うか、テンプレートリテラルを使うのが現代的でスマートです。

let count = 5;

// 文字列に変換してから padStart を呼ぶ!
let safeCount = String(count).padStart(2, “0”);

console.log(safeCount); // 「05」として無事に動きます

注意点その2:埋める文字は1文字じゃなくてもいい

「ゼロ埋め」で使うことが多いので「0」専用と思われがちですが、実は複数の文字を指定することもできます。

let text = “7”;

// 「abc」という文字列で、全体が6文字になるように左側を埋める
let result = text.padStart(6, “abc”);

console.log(result); // 結果: 「abca7」

このように、指定した文字が繰り返し使われて隙間が埋められていきます(※目標の長さに端数が生じる場合は、文字の途中までで切り詰められます)。ちょっとしたデザインの装飾なんかにも応用できたりしますよ。

—

4. まとめ:今日からあなたのコードをスッキリさせよう

今回は、文字列の先頭を指定の文字で埋めてくれる `padStart()` についてお話ししました。

  • 何桁にするか と 何の文字で埋めるか を渡すだけでOK
  • すでに十分な長さがある文字列は、そのままそっとしておいてくれる
  • 使うときは「文字列」に変換してから呼ぶのを忘れずに!

Web制作やアプリケーション開発をしていると、日付や時刻の表示、IDのフォーマットなど、文字列の長さを揃えたいシチュエーションは本当にたくさんあります。

昔ながらの面倒な文字数計算のコードを書くのはもう卒業して、このスマートな `padStart()` をぜひあなたの武器に加えてみてください。あなたのJavaScriptライフが、ほんの少しでも快適で楽しいものになれば、チーフアーキテクトとしてこんなに嬉しいことはありません。

それでは、また次の現場の知見でお会いしましょう!

コメント

タイトルとURLをコピーしました