JavaScript - 配列を並び替える

sort

配列を並び替えるには sort() メソッドを使用します。sort の構文は以下のとおりです。

arr.sort([compareFunction])
配列の並び替え - sort
compareFunction
ソート順を定義する関数を指定します。省略された場合、配列は各要素の文字列比較に基づき辞書順にソートされます。

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]
配列の並び替え - ランダムに並び替える

関連記事

Category:
プログラミング
公開日:
更新日:
Pageviews:
13
Shares:
1
Tag:
JavaScript
コードレシピ