JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで指定した長さの「1」と「0」が交互に並ぶ文字列を生成する方法

問題

数値 n を引数として受け取るJavaScript関数を記述する必要があります。「1」から始まり、「1」と「0」が交互に並ぶ、長さ n の文字列を構築するのが目的です。

コード例

以下がその実装コードです。

const num = 12;
const buildString = (num = 1) => {
    let res = '';
    for(let i = 0; i < num; i++){
        if(i % 2 === 0){
            res += 1;
        }else{
            res += 0;
        };
    };
    return res;
};
console.log(buildString(num));

出力結果

101010101010

コードの解説

この関数の仕組みを順を追って見ていきましょう。

1. ループによる文字の生成

forループでインデックス i を 0 から num - 1 まで繰り返します。各反復において、i を 2 で割った余り(i % 2)を判定することで、偶数番目か奇数番目かを判別できます。

2. 偶奇による分岐

i % 2 === 0 が true の場合(偶数番目)は「1」を、false の場合(奇数番目)は「0」を結果文字列 res に連結します。これにより、「1」から始まる交互のパターンが自然に実現されます。

3. より簡潔な別の実装方法

ループを使わず、Array.from や repeat メソッドを活用すれば、より宣言的に記述できます。

// Array.from を使った例
const buildString = (num = 1) =>
    Array.from({ length: num }, (_, i) => (i % 2 === 0 ? 1 : 0)).join('');

// repeat を使った例
const buildString2 = (num = 1) => '10'.repeat(Math.ceil(num / 2)).slice(0, num);

console.log(buildString(12));  // 101010101010
console.log(buildString2(12)); // 101010101010

repeat を使う方法では「10」というパターンを必要な回数だけ繰り返し、slice で余分な部分を切り取ることで、偶数長・奇数長のどちらの指定にも対応できます。

まとめ

インデックスの偶奇を判定するシンプルなロジックで、「1」と「0」が交互に並ぶ文字列を簡単に生成できます。forループによる基本的な実装に加え、Array.from や repeat を使った関数型のアプローチも覚えておくと、状況に応じてコードの書き方を選べるようになります。

  1. JavaScriptの正規表現(RegExp)で文字列を置換する方法をわかりやすく解説

    JavaScriptの正規表現で文字列を置換する基本JavaScriptで正規表現(RegExp)を使って文字列を置換するには、文字列オブジェクトのreplace()メソッドを使用します。replace()メソッドは、第一引数に検索したい正規表現パターン、第二引数に置換後の文字列を指定するだけで、簡単に文字列の置き換えが行えます。サンプルコード以下のコードは、正規表現を使って文字列の一部を置換する実際の例です。ブラウザで実行して動作を確認してみてください。<html>   <head>      <script&g

  2. JavaScriptのTextEncoderとTextDecoderとは?文字列とバイト列の相互変換をわかりやすく解説

    JavaScriptでは、文字列とバイト列(バイナリデータ)を相互に変換したい場面がよくあります。そんなときに活躍するのが、TextEncoderとTextDecoderという2つの標準組み込みAPIです。本記事では、それぞれの役割と基本的な使い方を、実際に動くサンプルコードとともに解説します。 TextEncoderとは TextEncoderは、指定した文字列をUTF-8形式に変換(エンコード)するためのオブジェクトです。encode()メソッドに文字列を渡すと、変換結果がUint8Array(符号なし8ビット整数の配列)として返されます。 TextDecoderとは TextDecod