sortメソッド
メソッド sort は、配列を辞書順にソートし、
変更された配列を返します。オプションのパラメータとして、
独自のソート用関数を指定できます。
構文
配列.sort([関数]);
例
配列をソートしてみましょう:
let arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());
コードの実行結果:
['a', 'b', 'c', 'd']
例
数値の配列をソートしてみましょう:
let arr = [4, 1, 7, 2];
console.log(arr.sort());
コードの実行結果:
[1, 2, 4, 7]
例
配列に数値を追加してソートしてみましょう:
let arr = [1, 123, 2, 4, 111, 7];
console.log(arr.sort());
コードの実行結果から、 数値が昇順ではなく辞書順(レキシコグラフィックオーダー) で配置されていることがわかります。 つまり、数値は文字列として比較され、 各文字のコードが隣の文字のコードより大きいかどうかが 比較されます。結果は以下の通りです:
[1, 111, 123, 2, 4, 7]
例
次に、関数を使用して配列をソートしてみましょう。
関数内に条件を記述します -
最初のパラメータが2番目のパラメータより大きい場合、
それを入れ替えます(そのために return で任意の正の数を返します)。
逆の場合は入れ替えは不要で、
0 または任意の負の数を指定します:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
if (a > b) {
return 1;
} else {
return -1;
}
});
console.log(arr);
コードの実行結果:
[1, 2, 4, 7, 111, 123]
例
前の例の関数のコードを簡略化してみましょう:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
return a - b;
});
console.log(arr);
コードの実行結果:
[1, 2, 4, 7, 111, 123]
例
次に、関数を使用して配列を降順でソートしてみましょう:
let arr = [1, 123, 2, 4, 111, 7];
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);
コードの実行結果:
[123, 111, 7, 4, 2, 1]
例
オブジェクトの配列を、キー 'one' で昇順にソートしてみましょう:
let arr = [
{one: 1, two: 2},
{one: 7, two: 1},
{one: 3, two: 3}
];
arr.sort(function(a, b) {
return a.one - b.one;
});
console.log(arr);
コードの実行結果:
[
{one: 1, two: 2},
{one: 3, two: 3},
{one: 7, two: 1}
]
例
次に、オブジェクトの配列をキー 'two' でソートしてみましょう:
let arr = [
{one: 1, two: 2},
{one: 7, two: 1},
{one: 3, two: 3}
];
arr.sort(function(a, b) {
return a.two - b.two;
});
console.log(arr);
コードの実行結果:
[
{one: 7, two: 1},
{one: 1, two: 2},
{one: 3, two: 3}
]
例
メソッド sort を適用した後、配列が変更されたか確認してみましょう:
let arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();
console.log(arr);
コードの実行結果:
['a', 'b', 'c', 'd']
関連項目
-
メソッド
filter,
配列の要素をフィルタリングすることができます