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

JavaScriptで特定の文字で始まる単語を配列から検索する方法

JavaScriptでは、文字列の配列を第1引数として受け取り、単一の文字を第2引数として受け取る関数を作成することが求められるケースがあります。

この関数は、第2引数で指定された文字で始まる、配列内の最初の要素を見つけ出し、そのインデックスを返す必要があります。該当する要素が存在しない場合は -1 を返すのが一般的です。

実装例

以下のコードは、forループで配列を先頭から順に走査し、各要素の先頭1文字が指定された文字と一致するかどうかを判定する、最も基本的な実装です。

const names = ['Naman', 'Kartik', 'Anmol', 'Rajat', 'Keshav', 'Harsh', 'Suresh', 'Rahul'];
const firstIndexOf = (arr = [], char = '') => {
    for(let i = 0; i < arr.length; i++){
        const el = arr[i];
        if(el.substring(0, 1) === char){
            return i;
        };
    };
    return -1;
};
console.log(firstIndexOf(names, 'K'));
console.log(firstIndexOf(names, 'R'));
console.log(firstIndexOf(names, 'J'));

出力結果

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

1
3
-1

コードのポイント

  • el.substring(0, 1) で各文字列の先頭1文字を取り出し、=== 演算子で指定文字と厳密に比較しています。
  • 一致する要素が見つかった時点でインデックスを返すため、無駄なループ処理が発生しません。
  • 比較は大文字・小文字を区別します。たとえば 'k' と 'K' は別の文字として扱われるため注意が必要です。
  • 最後まで一致する要素が見つからなかった場合は -1 を返します。

findIndex() を使ったより簡潔な書き方

ES6以降で使える Array.prototype.findIndex() メソッドを利用すると、同じ処理を1行でスマートに記述できます。

const firstIndexOf = (arr = [], char = '') => arr.findIndex(el => el.charAt(0) === char);

console.log(firstIndexOf(names, 'K')); // 1
console.log(firstIndexOf(names, 'R')); // 3
console.log(firstIndexOf(names, 'J')); // -1

findIndex() は条件を満たす最初の要素のインデックスを返し、見つからなければ -1 を返します。今回の要件にぴったり合致しており、可読性・保守性の観点からも手書きのループよりも推奨される方法です。

  1. JavaScriptで指定した間隔(ギャップ)を持つ2つの素数のペアを見つける方法

    問題 数値 gap を第一引数として、また2つの数値からなる範囲配列を第二引数として受け取るJavaScript関数を作成する必要があります。この関数は、指定された範囲内に存在し、かつ絶対差が gap と一致する素数のペアを見つけて返すものです。 例えば、gap = 4、範囲が [20, 200] の場合、「37」と「41」はどちらも素数であり、その差はちょうど4であるため、条件を満たすペアとなります。 解決のアプローチ この問題は以下のステップで解決できます。 素数判定: 与えられた数が素数かどうかを判定するヘルパー関数を用意します。 素数の収集: 指定された範囲内のすべての素数を配列に

  2. Pythonで特定の文字で始まるリスト要素を検索する方法

    この記事では、Pythonのリストから「特定の文字で始まる要素」だけを抽出する方法を、2つの異なるアプローチで解説します。 方法1:インデックスとlower()を組み合わせる まず紹介するのは、lower()関数とインデックス([0])を組み合わせる方法です。lower()を使うことで、大文字・小文字を区別せずに比較できるのがポイントです。リスト内包表記の中で各要素の先頭文字(インデックス0)を取り出し、テスト用の文字と照合します。 サンプルコード listA = [Mon, Tue, Wed, Thu] # 比較に使う文字 test = T # 元のリストを表示 print(Given