JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで偶数を先頭・奇数を後ろにそれぞれ昇順で並べ替える方法


本記事では、数値の配列を受け取り、すべての偶数を昇順で先頭に並べ、その後ろにすべての奇数を昇順で並べるJavaScript関数の実装方法を解説します。

たとえば、入力配列が次の場合を考えてみましょう。

const arr = [2, 5, 2, 6, 7, 1, 8, 9];

このとき、期待される出力は以下のとおりです。

const output = [2, 2, 6, 8, 1, 5, 7, 9];

サンプルコード

以下が実際の実装コードです。

const arr = [2, 5, 2, 6, 7, 1, 8, 9];
const isEven = num => num % 2 === 0;
const sorter = ((a, b) => {
    if(isEven(a) && !isEven(b)){
        return -1;
    };
    if(!isEven(a) && isEven(b)){
        return 1;
    };
    return a - b;
});
const oddEvenSort = arr => {
    arr.sort(sorter);
};
oddEvenSort(arr);
console.log(arr);

コードの解説

このコードの動作を理解するためのポイントは次の3つです。

  • isEven関数:剰余演算子(%)を使い、数値を2で割った余りが0かどうかで偶数かどうかを判定します。
  • sorter比較関数:片方が偶数でもう片方が奇数の場合は偶数側を優先し、両方の偶奇が同じ場合は通常の数値比較(a - b)によって昇順に並べます。
  • Array.prototype.sort():この比較関数を引数として渡して呼び出すことで、配列全体が「偶数(昇順)→ 奇数(昇順)」の順に並べ替えられます。

実行結果

コンソールには次の出力が表示されます。

[
    2, 2, 6, 8,
    1, 5, 7, 9
]

  1. JavaScriptで実装するマージソートとクイックソートの徹底解説

    マージソート(Merge Sort)とは マージソートは、分割統治法(Divide and Conquer)に基づいたソートアルゴリズムです。最悪計算量は O(n log n) と非常に効率的ですが、その代償として追加の O(n) のメモリ領域が必要になるという特徴があります。 ここでは、このアルゴリズムを2つの関数、mergeSort と merge を作成して実装していきます。 merge(マージ) ― 2つの引数(部分的にソートされた2つの配列)を受け取り、要素を正しい順序で挿入しながら1つの配列に結合する関数です。 mergeSort(マージソート) ― 配列の左半分と右半分に対し

  2. JavaScriptのArray.prototype.sort()メソッドの使い方をサンプルコードで解説

    Array.prototype.sort()は、JavaScriptで配列の要素を並べ替えるための組み込みメソッドです。アルファベット順・数値順といった並び方に加えて、昇順・降順も自由に指定でき、配列操作の中でも特に使用頻度の高いメソッドの一つです。 ただし重要なポイントとして、sort()メソッドはデフォルトではすべての要素を文字列に変換してから比較します。そのため、数値の配列を意図したとおりに並べ替えたい場合は、比較関数を引数として渡す必要があります。 以下は、Array.prototype.sort()メソッドの基本的な使い方を示すサンプルコードです。 サンプルコード <!DOC