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

JavaScriptで再帰関数を使って配列内の各文字列の先頭単語を大文字にする方法


JavaScriptで、文字列リテラルの配列を受け取る関数を作成することを考えます。この関数は、次の2つの条件を満たす必要があります。

  • 再帰的なアプローチを使用すること

  • 各文字列要素の先頭の単語を大文字にすること

さらに、別の配列を保存するための余分な領域を使わずに、元の配列を直接書き換える(in-placeで処理する)方式で実装する必要があります。

たとえば、入力配列が以下の場合:

const arr = ['apple', 'banana', 'orange', 'grapes'];

この配列は次のように変換されるべきです:

const output = ['Apple', 'Banana', 'Orange', 'Grapes'];

サンプルコード

これを実現するコードは以下のとおりです。

const arr = ['apple', 'banana', 'orange', 'grapes'];
const capitalize = (arr = [], ind = 0) => {
   const helper = (str = '') => {
      return str[0].toUpperCase() + str.slice(1).toLowerCase();
   };
   if(ind < arr.length){
      arr[ind] = helper(arr[ind]);
      return capitalize(arr, ind + 1);
   };
   return;
};
capitalize(arr);
console.log(arr);

コードの解説

ここでは、capitalize 関数が現在のインデックス ind を引数として持ち、再帰的に呼び出されています。ind が配列の長さ未満である限り、その位置の要素を helper 関数で変換し、インデックスを1つ進めて自分自身を再度呼び出します。すべての要素の処理が完了すると、再帰は自然に終了します。

内部の helper 関数は、文字列の最初の文字を toUpperCase() で大文字に変換し、slice(1) で取得した残りの部分を toLowerCase() で小文字にそろえてから連結しています。これにより、入力がどんな大文字・小文字の組み合わせであっても、常に「先頭のみ大文字」という形式に統一されます。

実行結果

コンソールには次のように出力されます。

[ 'Apple', 'Banana', 'Orange', 'Grapes' ]
  1. JavaScriptの配列findIndex()関数の使い方をわかりやすく解説

    JavaScriptのfindIndex()関数は、配列の中から指定した条件を満たす最初の要素を見つけ、そのインデックス番号を返すメソッドです。条件に合う要素が見つかった場合、その要素のインデックスが返されます。もし条件を満たす要素がひとつも存在しない場合は、-1が返されるという特徴があります。findIndex()の基本的な使い方以下は、findIndex()関数を使ったサンプルコードです。ボタンをクリックすると、配列内の「lion」という要素のインデックスを取得して表示します。サンプルコード<!DOCTYPE html> <html lang="ja"

  2. JavaScriptの配列some()メソッドの使い方をわかりやすく解説

    JavaScriptのArray.some()メソッドは、配列の要素の中に、指定されたテスト(条件)を満たすものが「1つでも存在するかどうか」を判定するためのメソッドです。ここでいうテストとは、配列の各要素に対して順番に実行されるコールバック関数のことを指します。コールバック関数が1つでもtrueを返した時点でsome()はtrueを返し、すべての要素が条件を満たさなかった場合はfalseを返します。なお、空の配列に対して呼び出した場合は常にfalseを返すという仕様になっている点にも注意しましょう。some()メソッドのサンプルコード以下は、配列のsome()メソッドを使った具体的な実装例で