JavaScriptで年齢に基づいて配列を並べ替える方法【18歳未満を先頭に移動】
本記事では、人物の年齢を表す数値の配列を受け取り、18歳未満の年齢をすべて配列の先頭に移動させるJavaScript関数の実装方法を解説します。
ここでのポイントは、余分なメモリ(新しい配列の作成など)を使わずに並べ替えを行う点です。Array.prototype.sort()メソッドにカスタム比較関数を渡すことで、元の配列をそのまま(in-place)並べ替えられます。
実装コード
実際のコードは以下のようになります。
const ages = [23, 56, 56, 3, 67, 8, 4, 34, 23, 12, 67, 16, 47];
const sorter = (a, b) => {
if (a < 18) {
return -1;
};
if (b < 18) {
return 1;
};
return 0;
}
const sortByAdults = arr => {
arr.sort(sorter);
};
sortByAdults(ages);
console.log(ages);出力結果
コンソールには次のように表示されます。
[ 16, 12, 4, 8, 3, 23, 56, 56, 67, 34, 23, 67, 47 ]
コードの解説
sorter関数はsort()メソッドに渡す比較関数として機能します。動作の仕組みは以下の通りです。
- 第1引数
aが18未満の場合は-1を返し、aを先頭側に配置します。 - 第2引数
bが18未満の場合は1を返し、bを先頭側に移動させます。 - どちらの条件にも当てはまらない場合は
0を返し、順序を維持します。
sortByAdults関数は、この比較関数を使って配列を並べ替えます。sort()は元の配列を直接変更するため、追加の配列やバッファを確保する必要がなく、メモリ効率の良い実装になっています。
-
JavaScriptのArray.prototype.sort()メソッドの使い方をサンプルコードで解説
Array.prototype.sort()は、JavaScriptで配列の要素を並べ替えるための組み込みメソッドです。アルファベット順・数値順といった並び方に加えて、昇順・降順も自由に指定でき、配列操作の中でも特に使用頻度の高いメソッドの一つです。 ただし重要なポイントとして、sort()メソッドはデフォルトではすべての要素を文字列に変換してから比較します。そのため、数値の配列を意図したとおりに並べ替えたい場合は、比較関数を引数として渡す必要があります。 以下は、Array.prototype.sort()メソッドの基本的な使い方を示すサンプルコードです。 サンプルコード <!DOC
-
JavaScriptでオブジェクト配列をindexプロパティの値に基づいて並べ替える方法
はじめにJavaScriptでは、オブジェクトが格納された配列を特定のプロパティの値に基づいて並べ替えたい場面がよくあります。本記事では、各オブジェクトが持つ index プロパティの値を基準に配列を昇順にソートし、その結果を文字列の配列へ変換する方法を解説します。対象となるデータ例として、次のようなオブジェクトの配列を想定します。const arr = [ { name: d, index: 3 }, { name: c, index: 2 }, { name: a,