【JavaScript】指定した文字で始まる単語だけを反転させる方法
本記事では、文章の文字列と1文字を受け取り、その文字で始まるすべての単語を反転させるJavaScript関数の実装方法を解説します。
課題の内容
たとえば、次のような文字列があったとします。
const str = 'hello world, how are you';
ここで対象となる文字として「h」を指定します。
この場合、期待される出力は次のとおりです。
const output = 'olleh world, woh are you';
つまり、「h」で始まる単語(hello と how)だけを逆順にし、それ以外の単語はそのままの形で残すという処理を行います。
実装コード
以下が実際のコード例です。
const str = 'hello world, how are you';
const reverseStartingWith = (str, char) => {
const strArr = str.split(' ');
return strArr.reduce((acc, val) => {
if(val[0] !== char){
acc.push(val);
return acc;
};
acc.push(val.split('').reverse().join(''));
return acc;
}, []).join(' ');
};
console.log(reverseStartingWith(str, 'h'));処理の流れ
このコードの動きを順番に見ていきましょう。
まず split(' ') を使って、元の文字列をスペース区切りで単語ごとの配列に分解します。次に reduce() メソッドで各単語を走査し、先頭の文字(val[0])が指定された文字と一致しない場合は、その単語をそのまま結果の配列へ追加します。
一方、先頭の文字が一致する単語については、split('').reverse().join('') という3つのメソッドを組み合わせることで、単語内の文字を1文字ずつ分解して反転させたうえで再び連結し、結果の配列に追加します。
最後に join(' ') を呼び出して、配列の要素をスペース区切りの1つの文字列に戻して返却すれば完成です。
出力結果
コンソールには次のように表示されます。
olleh world, woh are you
このように、split・reduce・reverseといった標準的な配列メソッドを組み合わせるだけで、条件に合致する単語だけを簡単に反転させることができます。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptでアクセント付き文字を含む文字列を並べ替える方法
JavaScriptの標準的な sort() メソッドは、文字列をUnicodeコードポイントの順序に基づいて比較します。そのため、「é」や「ó」のようなアクセント付き文字を含む文字列を単純にソートすると、期待通りのアルファベット順にならないことがあります。この問題を解決するには、localeCompare() メソッドを使用します。このメソッドは、指定されたロケールの言語規則に従って文字列を比較できるため、アクセント付き文字も正しく並べ替えられます。localeCompare() の基本的な使い方以下は、スペイン語のアクセント付き文字を含む配列を localeCompare() を使ってソー