Sortメソッド
CoddyのJavaScriptジャーニー「論理とフロー」セクションの一部 — レッスン 57/65。
sort() メソッドを使用すると、配列の要素を元の配列内で直接(in place)ソートし、ソートされた配列を返します。デフォルトでは、要素を文字列としてアルファベットの昇順でソートします。
基本的な構文は次のとおりです:
array.sort([compareFunction])比較関数を使用しない例:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']警告: 比較関数を指定しない場合、数値は期待通りにソートされません:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (不正確な数値ソート)数値を正しくソートしたり、カスタムソートを実装したりするには、比較関数を使用する必要があります。
比較関数は以下を返す必要があります:
- a が b より前に来るべき場合は負の値
- b が a より前に来るべき場合は正の値
- それらが等しい場合は 0
比較関数を使用して数値をソートする方法は次のとおりです。
// 昇順
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]オブジェクトをソートする別の例:
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));チャレンジ
簡単文字列の配列を受け取り、それらの文字列を長さの昇順でソートした新しい配列を返す、sortByLength という名前の関数を作成してください。2つの文字列が同じ長さの場合は、アルファベット順にソートする必要があります。
チートシート
sort() メソッドは、配列の要素をインプレース(元の配列を変更)でソートし、ソートされた配列を返します。デフォルトでは、要素を文字列としてアルファベット順にソートします。
基本構文:
array.sort([compareFunction])文字列のソート:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'mango', 'orange']警告: 比較関数がない場合、数値は正しくソートされません:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers); // [1, 100000, 21, 30, 4] (incorrect)比較関数の戻り値:
- a を b より前に配置する場合は負の値
- b を a より前に配置する場合は正の値
- 等しい場合は 0
数値を正しくソートする:
// 昇順
numbers.sort((a, b) => a - b);
// 降順
numbers.sort((a, b) => b - a);オブジェクトのソート:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// 年齢でソート
people.sort((a, b) => a.age - b.age);
// 名前でアルファベット順にソート
people.sort((a, b) => a.name.localeCompare(b.name));自分で試してみよう
function sortByLength(arr) {
return arr.sort((a, b) => {
// ここにコードを記述してください
})
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。