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

JavaScriptで文字列内の2文字間の距離を求める方法

はじめに

JavaScriptでは、文字列内に存在する2つの特定の文字が互いにどれだけ離れているか(距離)を、数行のコードで簡単に計算できます。この記事では、第一引数に対象の文字列を、第二引数と第三引数にそれぞれ1文字ずつ受け取り、それら2つの文字間の距離を返す関数の作成方法を解説します。

問題の概要

たとえば、次のような3つの文字列が与えられたとします。

const str = 'Disaster management';
const a = 'i', b = 't';

この場合、期待される出力は 4 になります。文字「i」と「t」の間の距離(インデックスの差)が4だからです。

サンプルコード

以下がその実装例です。

const str = 'Disaster management';
const a = 'i', b = 't';

const distanceBetween = (str, a, b) => {
    const aIndex = str.indexOf(a);
    const bIndex = str.indexOf(b);
    if (aIndex === -1 || bIndex === -1) {
        return false;
    }
    return Math.abs(aIndex - bIndex);
};

console.log(distanceBetween(str, a, b));

コードの解説

  • indexOf() メソッドを使い、文字「a」と「b」が文字列内で最初に出現する位置(インデックス)をそれぞれ取得します。
  • どちらかの文字が見つからなかった場合(-1 が返された場合)は、false を返して処理を終了します。これにより、存在しない文字が指定されたときのエラーを防げます。
  • 両方の文字が見つかった場合は、Math.abs() で2つのインデックスの差の絶対値を計算し、それを距離として返します。

出力結果

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

4

まとめ

indexOf()Math.abs() を組み合わせるだけで、文字列内の任意の2文字の距離をシンプルに求めることができます。なお、indexOf() は最初に見つかった位置のみを返すため、同じ文字が複数回出現する場合は最初の出現位置どうしの距離が計算される点に注意してください。文字が見つからないケースへの対処も組み込むことで、より堅牢な関数になります。

  1. JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説

    JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>

  2. JavaScriptでソート済み配列の各要素の二乗を昇順に求める方法

    問題昇順にソートされた整数の配列 arr を引数として受け取るJavaScript関数を作成する必要があります。この関数は、各数値の二乗を計算し、それらも昇順に並べ替えた配列として返さなければなりません。例えば、関数への入力が次のような場合 −const arr = [-2, -1, 1, 3, 6, 8];出力は次のようになります −const output = [1, 1, 4, 9, 36, 64];解法のポイント:二ポインタ法この問題は二ポインタ(Two Pointers)と呼ばれる手法を使うと効率的に解けます。元の配列が昇順にソートされているため、負の数でも絶対値が大きいほど二乗した