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));チャレンジ
簡単文字列の配列を受け取り、それらの文字列をその length の ascending 順(昇順)でソートした新しい配列を返す sortByLength という関数を作成してください。2つの文字列が同じ length の場合は、alphabetically(アルファベット順)にソートしてください。
自分で試してみよう
function sortByLength(arr) {
return arr.sort((a, b) => {
// ここにコードを書いてください
})
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
自分で練習してみよう: JavaScriptオンラインコンパイラ