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

JavaScriptで文字列から配列内の単語を削除する方法

文字列と文字列の配列が与えられたとき、配列に含まれるすべての単語を元の文字列から取り除く関数を作成するのが、今回の課題です。

削除対象となる部分文字列は完全な単語であるため、単語を取り除いた際に生じる前後の余分な空白も削除し、2つ以上の空白が連続して現れないようにする必要があります。

それでは、この関数のコードを実際に書いてみましょう。

コード例

const string = "The weather in Delhi today is very similar to the weather in Mumbai";
const words = [
    'shimla','rain','weather','Mumbai','Pune','Delhi','tomorrow','today','yesterday'
];
const removeWords = (str, arr) => {
    return arr.reduce((acc, val) => {
        const regex = new RegExp(` ${val}`, "g");
        return acc.replace(regex, '');
    }, str);
};
console.log(removeWords(string, words));

実装のポイント

このコードでは、reduceメソッドを使って配列内の各単語を順番に処理しています。各単語に対して、単語の前に半角スペースを付けたパターンの正規表現を作成し、replaceメソッドで該当する部分を空文字列に置き換えています。

単語の前にスペースを含めてマッチさせることで、単語そのものと直前の空白を同時に削除でき、結果として複数の空白が連続する問題を回避しています。

出力結果

このコードを実行すると、コンソールには以下のように出力されます。

The in is very similar to the in

ご覧のとおり、配列に含まれていた「weather」「Delhi」「today」「Mumbai」といった単語が文字列からすべて削除され、余分な空白も残らずきれいな文になっています。


  1. JavaScriptのarray.includes()メソッドの使い方をわかりやすく解説

    array.includes()メソッドとはJavaScriptのarray.includes()メソッドは、配列の中に特定の要素が含まれているかどうかを判定するために使用されます。要素が存在すれば true、存在しなければ false を返します。基本構文arr.includes(searchElement[, fromIndex])searchElement:検索したい要素を指定します。fromIndex(省略可能):検索を開始するインデックス位置を指定します。デフォルトは 0 です。なお、includes()メソッドは大文字と小文字を区別する点に注意してください。サンプルコード以下は、a

  2. JavaScriptのArray.prototype.includes()メソッドとは?配列内に特定の要素が含まれるか判定する方法

    Array.prototype.includes()メソッドとは JavaScriptのArray.prototype.includes()メソッドは、配列の中に特定の要素が含まれているかどうかを判定するためのメソッドです。要素が見つかった場合はtrue、見つからなかった場合はfalseを返します。 基本構文 arr.includes(searchElement[, fromIndex]) searchElement:検索対象となる要素を指定します。 fromIndex(省略可能):検索を開始するインデックス位置です。省略した場合は先頭(0)から検索されます。 サンプルコード 以下は、in