しばらくJavaScriptに参加している場合、配列ソート関数ソートは配列プロトタイプのメソッド、つまりarray.prototype.sort()、sort(comparefunction)であることを知っておく必要があります。 Mozilla MDNの説明を見てみましょう。
比較機能が提供されていない場合、要素は文字列に変換し、辞書的な文字列(「辞書」または「電話帳」、数値ではない)の順序を比較することによりソートされます。たとえば、「80」は辞書編集の順序で「9」の前に来ますが、数値では8は80の前にあります。
ここにいくつかの簡単な例があります:
コードコピーは次のとおりです。
//出力[1、2、3]
console.log([3、2、1] .sort());
// output ["a"、 "b"、 "c"]]
console.log(["c"、 "b"、 "a"]。sort());
// output [1、2、 "a"、 "b"]]
console.log(["b"、2、 "a"、1] .sort());
上記の例からわかるように、デフォルトは辞書のアルファベット順にソートされます。
幸いなことに、sortは次の例に示すように、カスタム比較関数を受け入れます。
コードコピーは次のとおりです。
関数CompareFunction(A、B){
if(a> b){
return -1;
} else if(a <b){
返品1;
}それ以外 {
0を返します。
}
}
// outputs ["zuojj"、 "benjamin"、 "1"]]
console.log(["benjamin"、 "1"、 "zuojj"]。sort(comparefunction));
ソート後、別の質問があります。昇順と降順の順序を制御する方法は?
コードコピーは次のとおりです。
関数CompareFunction(flag){
フラグ=フラグ?フラグ:「ASC」;
return function(a、b){
if(a> b){
flag === "desc"? -1:1;
} else if(a <b){
flag === "desc"? 1:-1;
}それ以外 {
0を返します。
}
};
}
//出力["1"、 "ベンジャミン"、 "zuojj"]]
console.log(["benjamin"、 "1"、 "zuojj"]。sort(comparefunction()));
// outputs ["zuojj"、 "benjamin"、 "1"]]
console.log(["benjamin"、 "1"、 "zuojj"]。sort(comparefunction( "desc")));
比較機能のソートルールは次のとおりです。
1.負の数を返す場合、Aは配列内のより低いインデックスにソートされます。
2.正の数を返す場合、Aはより高いインデックスに分類されます。
3.そして、それが0を返す場合、ソートは必要ありません。
Mozilla Mdnから抜粋した通路を見てみましょう。
ソートメソッドの動作は、JavaScript 1.1とJavaScript 1.2の間で変更されました。この説明を説明するには、例を見てみましょう。
JavaScript 1.1では、一部のプラットフォームでは、ソートメソッドが機能しません。この方法は、JavaScript 1.2のすべてのプラットフォームで機能します。
JavaScript 1.2では、このメソッドは未定義の要素をNULLに変換しなくなりました。代わりに、それらを配列のハイエンドにソートします。詳細については、ここをクリックしてください。
コードコピーは次のとおりです。
var arr = [];
arr [0] = "ant";
arr [5] = "zebra";
// outputs ["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