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

JavaScriptで整数の配列を正しくソートする方法

問題の概要

数値の配列を受け取り、その配列を昇順または降順のいずれかで「その場で(in place)」ソートするJavaScript関数を作成する必要があります。

ここで注意すべき点は、JavaScriptのArray.prototype.sort()メソッドを引数なしで呼び出すと、要素が文字列として比較されるという仕様があることです。そのため、数値の配列に対して単純にsort()を使うと、期待した大小関係ではなく辞書順(文字コード順)に並べ替えられてしまい、誤った結果になります。

これを回避するには、sort()メソッドに比較関数を渡す必要があります。

比較関数の仕組み

比較関数は2つの引数 ab を受け取り、戻り値の符号によって並び順が決まります。

  • a - b を返す場合:負の値なら a が先に来る → 昇順
  • b - a を返す場合:負の値なら b が先に来る → 降順

コード例

const arr = [2, 5, 19, 2, 43, 32, 2, 34, 67, 88, 4, 7];
const sortIntegers = (arr = []) => {
    const sorterAscending = (a, b) => {
        return a - b;
    };
    const sorterDescending = (a, b) => {
        return b - a;
    };
    // 昇順でソート(降順にしたい場合は sorterDescending を指定)
    arr.sort(sorterAscending);
};
sortIntegers(arr);
console.log(arr);

出力

コンソールには以下のように表示されます。

[
    2, 2, 2, 4, 5,
    7, 19, 32, 34, 43,
    67, 88
]

ポイントまとめ

  • sort()はデフォルトで要素を文字列として比較するため、数値配列には必ず比較関数を渡す。
  • arr.sort((a, b) => a - b) で昇順、(a, b) => b - a で降順になる。
  • sort()は元の配列を直接変更するため、この方法で「その場での」ソートが実現できる。
  1. JavaScriptのArray.prototype.sort()メソッドの使い方をサンプルコードで解説

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

  2. JavaScript配列から一意の値(重複なし)を取得する方法

    JavaScriptの配列に含まれる重複した値を取り除き、一意の値(ユニークな値)だけを取得したい場合は、Setオブジェクトを使うのが最もシンプルで効率的な方法です。 Setは同じ値を1つしか格納できないデータ構造のため、配列をnew Set()に渡すだけで自動的に重複が排除されます。その後、スプレッド構文([...set])を使えば、簡単に元の配列形式へ戻すことができます。 サンプルコード 以下は、JavaScriptの配列からすべての一意の値を取得する実際のコード例です。 <!DOCTYPE html> <html lang=ja> <head> <