言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. 配列.sort() / reverse()

配列.sort() / reverse()

配列の要素を並べ替え・反転するメソッドです。『sort()』は比較関数で順序を制御でき、『reverse()』は要素の順番を反転します。

構文

// 配列を並べ替えます。元の配列が変更されます。
配列.sort();
配列.sort(function(a, b) { return 比較結果; });

// 配列を反転します。元の配列が変更されます。
配列.reverse();

// 元の配列を変更せずに並べ替えた新しい配列を返します。
var newArray = 配列.toSorted(function(a, b) { return 比較結果; });

// 元の配列を変更せずに反転した新しい配列を返します。
var newArray = 配列.toReversed();

メソッド一覧

メソッド概要
sort(比較関数)配列の要素を並べ替えます。比較関数を省略するとUnicode順になります。元の配列が変更されます。
reverse()配列の要素の順番を反転します。元の配列が変更されます。
toSorted(比較関数)『sort()』と同じですが、元の配列を変更せず新しい配列を返します。ES2023で追加されました。
toReversed()『reverse()』と同じですが、元の配列を変更せず新しい配列を返します。ES2023で追加されました。

サンプルコード

// 文字列の並べ替え
var fruits = ["バナナ", "りんご", "みかん"];
fruits.sort();
console.log(fruits); // 『バナナ,みかん,りんご』と出力されます。Unicode順です。

// 数値の並べ替え。比較関数が必要です。
var numbers = [10, 1, 21, 2];
numbers.sort(function(a, b) {
	return a - b; // 昇順
});
console.log(numbers); // 『1,2,10,21』と出力されます。

// 降順にする場合
numbers.sort(function(a, b) {
	return b - a;
});
console.log(numbers); // 『21,10,2,1』と出力されます。

// 配列を反転します。
var letters = ["A", "B", "C", "D"];
letters.reverse();
console.log(letters); // 『D,C,B,A』と出力されます。

// toSortedで元の配列を保持します。
var original = [3, 1, 4, 1, 5];
var sorted = original.toSorted(function(a, b) {
	return a - b;
});
console.log(sorted); // 『1,1,3,4,5』と出力されます。
console.log(original); // 『3,1,4,1,5』と出力されます。元の配列は変わりません。

概要

『配列.sort()』は比較関数を省略すると、要素を文字列に変換してUnicode順で並べ替えます。数値の配列では『[10, 1, 21, 2]』が『[1, 10, 2, 21]』のように文字列順になってしまうため、数値を正しく並べ替えるには『function(a, b) { return a - b; }』のような比較関数が必要です。

比較関数は2つの引数を受け取り、戻り値が負なら第1引数が前に、正なら第2引数が前に、0なら順番が変わりません。昇順では『a - b』、降順では『b - a』を返すのが定番の書き方です。オブジェクトの配列を特定のプロパティで並べ替えたい場合にも同じ仕組みが使えます。

『配列.sort()』と『配列.reverse()』は元の配列を直接変更する破壊的メソッドです。元の配列を保持したい場合はES2023で追加された『toSorted()』『toReversed()』を使用するか、『配列.slice()』でコピーしてから並べ替えてください。

対応ブラウザ

Chrome Chrome
49 以降
全バージョンで対応しています
Firefox Firefox
57 以降
全バージョンで対応しています
Safari Safari
18 以降
全バージョンで対応しています
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
4.5 以前 ×
Opera Opera
48 以降
3 以前 ×
iOS Safari iOS Safari
18 以降
全バージョンで対応しています
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。