JavaScript - 配列を並び替える
sort
配列を並び替えるには sort()
メソッドを使用します。sort
の構文は以下のとおりです。
arr.sort([compareFunction])
配列の並び替え - sortcompareFunction
- ソート順を定義する関数を指定します。省略された場合、配列は各要素の文字列比較に基づき辞書順にソートされます。
sort
の返り値は、ソートされた結果の配列です。ソートは対象配列上で直接行われることに注意して下さい。コピーされた新しい配列が返るわけではありません。
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months); // ["Dec", "Feb", "Jan", "March"]
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1); // [1, 100000, 21, 30, 4]
配列の並び替え - sort数値を大小比較した上で並び替えるためには、以下のように記述します。
const array1 = [1, 30, 4, 21, 100000];
array1.sort((a, b) => (a - b));
console.log(array1); // [1, 4, 21, 30, 100000]
配列の並び替え - sort元の配列を破壊したくない場合は、配列の複製を行ってから並び替えを実施します。
const arr1 = ['a', 'b', 1, 3, 'c', 4, 2];
const arr2 = arr1.slice().sort();
console.log(arr1); // ["a", "b", 1, 3, "c", 4, 2];
console.log(arr2); // [1, 2, 3, 4, "a", "b", "c"]
配列の並び替え - slice/sort配列の要素をシャッフルしたい場合は、以下のように記述します。
const array = [1, 2, 3, 4, "a", "b", "c"];
// Fisher–Yates アルゴリズムでシャッフルする
for(var i = array.length - 1; i > 0; i--){
var rand = Math.floor(Math.random() * (i + 1));
[array[i], array[rand]] = [array[rand], array[i]];
}
console.log(array); // ["c", 2, "b", 3, "a", 4, 1]
配列の並び替え - ランダムに並び替える