JavaScriptで文字数が奇数の単語のみを反転させる方法
本記事では、文字列を受け取り、その中から文字数が奇数の単語だけを反転させて返すJavaScript関数の作成方法を解説します。
「単語」の定義
ここでいう「単語」とは、文字列内の部分文字列のうち、以下のいずれかの条件を満たすものを指します。
- 両側がスペースに挟まれている
- 文頭または文末に位置し、かつ内側がスペースに隣接している
入力例
たとえば、次のような文字列を考えてみます。
const str = 'hello beautiful people';
このうち、文字数が奇数の単語は次の2つです。
hello(5文字) beautiful(9文字)
一方、3番目の単語 people は6文字のため偶数であり、反転の対象外となります。
サンプルコード
それでは、実際のコードを見てみましょう。
const str = 'hello beautiful people';
const isOdd = str => str.length % 2 === 1;
const reverseOddWords = (str = '') => {
const strArr = str.split(' ');
return strArr.reduce((acc, val) => {
if (isOdd(val)) {
acc.push(val.split('').reverse().join(''));
return acc;
}
acc.push(val);
return acc;
}, []).join(' ');
};
console.log(reverseOddWords(str));
コードの解説
この関数の処理の流れは以下のとおりです。
- split(' ') で文字列をスペース区切りで分割し、単語の配列を作成します。
- reduce() を使って各単語を順番に処理します。
- 補助関数 isOdd() により、単語の文字数が奇数かどうか(length % 2 === 1)を判定します。
- 奇数の場合は split('').reverse().join('') の組み合わせで文字順を反転して配列に追加し、偶数の場合はそのまま追加します。
- 最後に join(' ') で配列を再びスペース区切りの文字列へ連結して返します。
実行結果
コンソールには次のように出力されます。
olleh lufituaeb people
hello は olleh へ、beautiful は lufituaeb へと反転され、文字数が偶数の people は元のまま出力されていることが確認できます。
-
JavaScriptで指定した文字数に文字列を切り詰める方法
JavaScriptでは、長いテキストを一覧表示やプレビュー用に短く表示したい場面がよくあります。この記事では、文字列と数値を受け取り、指定された文字数を超える場合は文字列を切り詰めて末尾に「...」を付けて返す関数の実装方法を解説します。要件作成する関数は、文字列と数値の2つの引数を受け取ります。文字列の長さが指定された数値より大きい場合は、先頭から指定文字数分だけ切り取った文字列に「...」を連結して返します。切り詰める必要がない場合(元の文字列が指定文字数以下の場合)は、元の文字列をそのまま返します。コード例以下がその実装コードです。 { const { length: len
-
JavaScriptで隣接する同一単語のペアを数える方法
問題概要英文の文章を表す文字列 str を引数として受け取るJavaScript関数を作成します。この関数の目的は、文字列の中で隣り合って登場する同じ単語のペアがいくつあるかを数え、その個数を返すことです。比較の際には大文字と小文字を区別しないため、it と It は同一の単語としてカウントされます。入力例const str = This this is a a sample string;出力例const output = 2;出力の説明文中の This this と a a の2箇所で同じ単語が連続して現れているため、結果は 2 となります。実装コード以下が実際のコード例です。const