Javascriptの配列ソートを詳しく解説_基礎知識

WBOY
リリース: 2016-05-16 16:33:11
オリジナル
1193 人が閲覧しました

JavaScript をしばらく使ったことがある人なら、配列ソート関数 sort は配列プロトタイプのメソッド、つまり array.prototype.sort() や sort(compareFunction) であることを知っているはずです。ここで、compareFunction はMozilla MDN の説明を見てみましょう:
compareFunction が指定されていない場合、要素は文字列に変換され、辞書順 (数値ではなく「辞書」または「電話帳」) で文字列を比較することによって並べ替えられます。たとえば、辞書順では「80」が「9」の前になります。ただし、数値ソートでは 9 は 80 より前に来ます。

以下の簡単な例をいくつか見てください:

コードをコピーします コードは次のとおりです:

// 出力 [1, 2, 3]
console.log([3, 2, 1].sort());

// 出力 ["a", "b", "c"]
console.log(["c", "b", "a"].sort());

// 出力 [1, 2, "a", "b"]
console.log(["b", 2, "a", 1].sort());


上記の例からわかるように、デフォルトでは辞書内でアルファベット順に並べ替えられます。

幸いなことに、sort は次の例のようにカスタム比較関数を受け入れます。

コードをコピーします コードは次のとおりです:

関数compareFunction(a, b) {
if( a > b) {
-1 を返します;
}else if(a < b) {
1 を返します;
}else {
0 を返す;
}
}
//出力 ["zuojj", "Benjamin", "1"]
console.log(["ベンジャミン", "1", "zuojj"].sort(compareFunction));

並べ替えの後に、昇順と降順をどのように制御するかという別の質問があります。

コードをコピーします コードは次のとおりです:

function CompareFunction(flag) {
フラグ = フラグ ? フラグ : "asc";
return function(a, b) {
if( a > b) {
戻りフラグ === "desc" ? -1 : 1;
}else if(a < b) {
戻りフラグ === "desc" 1 : -1;
}else {
0 を返す;
}
};
}
//出力 ["1", "Benjamin", "zuojj"]
console.log(["ベンジャミン", "1", "zuojj"].sort(compareFunction()));
//出力 ["zuojj", "Benjamin", "1"]
console.log(["ベンジャミン", "1", "zuojj"].sort(compareFunction("desc")));

comparFunction のソート規則は次のとおりです:
1.負の数値が返された場合、 a は配列内の低いインデックスにソートされます。
2.正の数値が返された場合、a はより高いインデックスにソートされます。
3.0 が返された場合、並べ替えは必要ありません。

Mozilla MDN からの抜粋を見てみましょう:
sort メソッドの動作は、JavaScript 1.1 と JavaScript 1.2 の間で変更されました。この説明を説明するために、例を見てみましょう:

JavaScript 1.1 では、一部のプラットフォームでは、このメソッドは JavaScript 1.2 のすべてのプラットフォームで機能しません。

JavaScript 1.2 では、このメソッドは未定義の要素を null に変換しなくなり、代わりに配列の上位に並べ替えられます。詳細については、ここをクリックしてください。

コードをコピーします コードは次のとおりです:

var arr = [];
arr[0] = "アリ";
arr[5] = "ゼブラ";
//出力 ["Ant", 5: "Zebra"]
console.log(arr);
//出力 6
console.log(arr.length);
//「Ant*****Zebra」を出力
console.log(arr.join("*"));
// 並べ替え
var sortArr = arr.sort();
//出力 ["Ant", "Zebra"]
console.log(sortArr);
//出力 6
console.log(sortArr.length);
//「Ant*Zebra****」を出力
console.log(sortArr.join("*"));

この記事が sort() メソッドの学習と理解に役立つことを願っています。記事内の不適切な点を批判して修正していただければ幸いです。

参考リンク: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート