【JavaScript】配列の先頭と末尾から要素をペアにして取り出す方法
今回は、数値や文字列のリテラルを格納した配列を受け取り、新たな配列の配列(ネストされた配列)を返すJavaScript関数を作成します。各サブ配列には、ちょうど2つの要素、つまり「先頭からn番目の要素」と「末尾からn番目の要素」が対になるように含まれます。
要件の確認
例えば、次のような配列があったとします。
const arr = [1, 2, 3, 4, 5, 6];
この場合、期待される出力は以下の通りです。
const output = [[1, 6], [2, 5], [3, 4]];
実装のポイント
配列の長さが偶数の場合は、すべての要素をきれいにペアにできます。一方、長さが奇数の場合は中央の要素がペア相手を持たないため、その要素だけを単独でサブ配列に含める必要があります。
コード例
以下が実際のコードです。
const arr = [1, 2, 3, 4, 5, 6];
const edgePairs = arr => {
const res = [];
const upto = arr.length % 2 === 0 ? arr.length / 2 : arr.length / 2 - 1;
for(let i = 0; i < upto; i++){
res.push([arr[i], arr[arr.length-1-i]]);
};
if(arr.length % 2 !== 0){
res.push([arr[Math.floor(arr.length / 2)]]);
};
return res;
};
console.log(edgePairs(arr));出力結果
コンソールには以下のように表示されます。
[ [ 1, 6 ], [ 2, 5 ], [ 3, 4 ] ]
コードの解説
- 結果用の配列res:ペア化した結果を格納する空の配列を用意します。
- ループ回数upto:配列の長さが偶数なら
length / 2回、奇数ならlength / 2 - 1回だけループします。これにより、同じ要素を二重にカウントすることを防ぎます。 - ペアの作成:
arr[i](先頭からi番目)とarr[arr.length - 1 - i](末尾からi番目)を組み合わせて、新しいサブ配列としてpushします。 - 奇数の場合の処理:長さが奇数のときは、
Math.floor(length / 2)で中央の要素を取得し、それを1要素だけのサブ配列として追加します。
このアルゴリズムの計算量はO(n/2)、実質的にO(n)であり、元の配列を変更せずに処理できるため、安全かつ効率的です。
-
JavaScriptで配列を空にする方法まとめ【3つの手法と使い分けのポイント】
JavaScriptで配列を空にする(初期化する)方法は複数あります。それぞれの手法には特徴や注意点があり、状況に応じて適切に使い分けることが重要です。この記事では、代表的な3つの方法と、それぞれのメリット・デメリットを詳しく解説します。まず、以下のような配列があると仮定します。let arr = [1, test, {}, 123.43];方法1:新しい空の配列で置き換えるarr = [];変数arrに新しい空の配列を再代入する方法です。最もシンプルかつ高速な手法として知られています。ただし注意点として、元の配列への参照がプログラムの他の場所に存在する場合、それらの参照は自動的に更新されませ
-
JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介
JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の