JavaScriptで単語と句読点の配列から文を作成する方法
問題
単語と句読点が格納された配列を受け取り、それらを連結して1つの文を組み立てるJavaScript関数を作成する必要があります。
文を組み立てる際は、以下の3つのルールに従う必要があります。
- 単語と単語の間には必ずスペースを1つ入れる
- カンマと、その左側にある単語との間にはスペースを入れない
- 文末にはピリオド(.)を必ず1つだけ付ける
コード例
以下が実際のコードです。
const arr = ['hey', ',', 'and', ',', 'you'];
const buildSentence = (arr = []) => {
let res = '';
for(let i = 0; i < arr.length; i++){
const el = arr[i];
const next = arr[i + 1];
if(next === ','){
res += el;
}else{
if(!next){
res += `${el}.`;
}else{
res += `${el} `;
}
}
}
return res;
};
console.log(buildSentence(arr));
出力結果
hey, and, you.
コードの解説
この関数では、forループを使って配列の各要素を先頭から順番に処理していきます。ポイントは、現在の要素だけでなく「次の要素(next)」の内容を確認し、その値に応じて連結方法を切り替えている点です。
- 次の要素がカンマ(,)の場合: 現在の単語の後にスペースを入れずにそのまま連結します。これにより、「hey,」のようにカンマが直前の単語に密着した形になります。
- 次の要素が存在しない場合(配列の末尾): 文の終わりを意味するため、ピリオド(.)を付けて連結します。これにより、文末に必ず1つだけピリオドが付くことが保証されます。
- 上記以外の場合: 通常の単語と単語の間にあたるため、スペースを1つ挟んで連結します。
このロジックにより、カンマの前には余計なスペースが入らず、単語同士の間には適切なスペースが挿入され、文末にはピリオドが1つだけ付いた「hey, and, you.」のような自然な文を生成できます。
-
JavaScriptで配列の最初と最後の要素を取得する方法
JavaScriptの配列は0から始まるインデックス(ゼロベース)で管理されています。つまり、最初の要素はインデックス「0」の位置にあり、最後の要素は「配列の長さ(length) − 1」の位置に存在します。そのため、最初と最後の要素には以下のようにアクセスできます。コード例arr[0] // 最初の要素 arr[arr.length - 1] // 最後の要素 // 実際の使用例 let arr = [1, test, {}, hello]; console.log(arr[0]); console.log(arr[arr.length - 1]);実行結果1 hello補足:より簡潔に書
-
JavaScriptのオブジェクト配列に配列メソッドを適用する方法
JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8