Menu
Coddy logo textTech

Sortメソッド

CoddyのJavaScriptジャーニー「論理とフロー」セクションの一部。レッスン 57/65。

sort() メソッドを使用すると、配列の要素をインプレースでソート(並び替え)し、ソートされた配列を返します。デフォルトでは、要素は文字列としてアルファベット順および昇順でソートされます。

基本となる構文は以下の通りです:

array.sort([compareFunction])

compare 関数を使用しない例:

const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']

警告: 比較関数(compare function)がない場合、数値は期待通りにソートされません:

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (不正確な数値ソート)

数字を正しくソートしたり、カスタムのソートを実装したりするには、比較関数(compare function)を使用する必要があります。

比較関数は以下を返す必要があります:

  • a が b の前になるべき場合は負の値
  • b が a の前になるべき場合は正の値
  • それらが等しい場合は 0

比較関数を使用して `numbers` を `sort` する方法は次のとおりです。

// 昇順
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]
// 降順
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]

オブジェクトをソートするもう1つの例:

const people = [
    { name: 'John', age: 30 },
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 35 }
];

// 年齢でソート(昇順)
people.sort((a, b) => a.age - b.age);
// 名前でソート(アルファベット順に localeCompare() を使用)
people.sort((a, b) => a.name.localeCompare(b.name));
challenge icon

チャレンジ

簡単

文字列の配列を受け取り、それらの文字列をその lengthascending 順(昇順)でソートした新しい配列を返す sortByLength という関数を作成してください。2つの文字列が同じ length の場合は、alphabetically(アルファベット順)にソートしてください。

自分で試してみよう

function sortByLength(arr) {
    return arr.sort((a, b) => {
        // ここにコードを書いてください
    })
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン

自分で練習してみよう: JavaScriptオンラインコンパイラ