JavaScriptで配列の全要素を指定した文字列で挟んで連結する方法(forループ・map活用)
本記事では、「文字列または数値の配列」と「1つの文字列」を引数に受け取り、配列内のすべての要素の前後にその文字列を付けて連結した結果を返す関数の作り方を解説します。
やりたいこと
たとえば、次のような呼び出しを行った場合を考えてみましょう。
applyText([1, 2, 3, 4], 'a');
この場合、期待される戻り値は 'a1a2a3a4a' です。つまり、各要素の前に文字列 'a' を付け、最後にもう一度 'a' を末尾に追加した形になります。
map()メソッドを使った実装
このような処理には、従来のforループよりも配列のmap()メソッドを使う方が簡潔で読みやすいコードになります。各要素を変換してからjoin()で連結する流れが自然に書けるためです。
サンプルコード
const numbers = [1, 2, 3, 4];
const word = 'a';
const applyText = (arr, text) => {
const appliedString = arr.map(element => {
return `${text}${element}`;
}).join("");
return appliedString + text;
};
console.log(applyText(numbers, word));
実行結果
コンソールには次のように出力されます。
a1a2a3a4a
コードのポイント
map()で各要素の直前に指定した文字列(text)を付加した新しい配列を作成します。join("")で配列の要素を区切り文字なしで1つの文字列に連結します。- 最後に
+ textで末尾にも同じ文字列を追加し、要素全体を文字列で挟んだ形にしています。
forループを使った実装
あえてforループで書きたい場合は、次のように実装できます。
const applyTextWithLoop = (arr, text) => {
let result = '';
for (let i = 0; i < arr.length; i++) {
result += `${text}${arr[i]}`;
}
return result + text;
};
console.log(applyTextWithLoop([1, 2, 3, 4], 'a')); // a1a2a3a4a
どちらの方法でも同じ結果が得られますが、宣言的で意図が伝わりやすいmap() + join()の組み合わせが、現代のJavaScriptでは推奨される書き方です。
-
JavaScriptで配列の反復に「for...in」を使うのはなぜ悪いのか?理由と代替手段を解説
JavaScriptでfor...inによる配列の反復が推奨されない理由JavaScriptでは、for...inループを使って配列を反復処理することは避けるべきだとされています。その主な理由は、予期しない挙動を引き起こす可能性があるためです。具体的な例を見てみましょう。通常のforループを使用した場合まず、一般的なforループで配列を反復処理した例です。let arr = [] arr[4] = 5 for (let i = 0; i < arr.length; i++) { console.log(arr[i]) }出力結果undefi
-
JavaScript配列で要素を検索する方法を徹底解説!find()メソッドの使い方
JavaScriptで配列の中から特定の要素を検索したい場面は非常に多くあります。本記事では、最もよく使われるfind()メソッドを中心に、実際に動作するサンプルコードとともに分かりやすく解説します。 find()メソッドとは find()メソッドは、配列の各要素に対して指定したテスト関数(コールバック関数)を実行し、条件を満たした最初の要素の値を返します。条件に一致する要素が存在しない場合は undefined を返します。 基本構文 arr.find(callback(element[, index[, array]])[, thisArg]) callback: 各要素をテストする関数