[javascript]arr.sort()で配列をソート
9718 ワード
arr.sort()はunderbar課題を行う際に認識される手法の一つであるが,戻り値によるソートの仕方が混同されているため,少なからぬ苦労をしている.だからsort()の方法を勉強して整理します.
Array.prototype.sort()
sort()メソッドは、配列内の要素をソートすることによって配列を返します.
元の配列を並べ替えて返すことに重点を置きます!
sort(compareFunction)
パラメータを関数として使用します.
compareFunctionには、ソート順を定義する関数が含まれます.
省略すると、デフォルトでは昇順で並べ替えられ、Unicode値に基づいて自動的に並べ替えられます.
数値ソートでは、2は19より前でなければならないが、数値も文字列に変換され、Unicode値でソートされる.
この場合、パラメータとしてcompareFunctionを使用してソートできます.
compareFunctionを使用すると、配列要素は関数の戻り値に基づいてソートされます.戻り値が正の場合
bをaの前に並べる. 戻り値が負の場合
aをbの前に並べる. 戻り値が0の場合
a,bの位置は変わらない. 昇順最初の買収が2番目の買収より小さい場合>return-1 の2つのパラメータは同時に>0 を返します.第1回目の買収が第2回目の買収より大きい場合>1 に戻る
降順
降順はreturn値の前に見られた昇順とは逆です.
ソート関数の戻り値は、任意の数値を返します.正の値を返すと、1番目のファクタは2番目のファクタより大きく、負の値を返すと、1番目のファクタは2番目のファクタより小さくなるので、数値を比較するときに戻り値をより簡潔に入れることができます.
(InfinityとNaNが含まれていない場合)
Array.prototype.sort()
sort()メソッドは、配列内の要素をソートすることによって配列を返します.
元の配列を並べ替えて返すことに重点を置きます!
sort(compareFunction)
パラメータを関数として使用します.
compareFunctionには、ソート順を定義する関数が含まれます.
省略すると、デフォルトでは昇順で並べ替えられ、Unicode値に基づいて自動的に並べ替えられます.
let arr = ["apple", "pear", "watermelon", "banana"];
arr.sort();
// ["apple", "banana", "pear", "watermelon"]
エレメントがnumberタイプなら?let numArr = [4, 2, 6, 8, 1, 19, 30];
numArr.sort();
//[1, 19, 2, 30, 4, 6, 8]
昇順で並べ替えられると思いますが、戻り値を見ると、並べ替えがおかしいことに気づきます.数値ソートでは、2は19より前でなければならないが、数値も文字列に変換され、Unicode値でソートされる.
この場合、パラメータとしてcompareFunctionを使用してソートできます.
compareFunctionを使用すると、配列要素は関数の戻り値に基づいてソートされます.
bをaの前に並べる.
aをbの前に並べる.
a,bの位置は変わらない.
let numArr = [4, 2, 6, 8, 1, 19, 30];
numArr.sort(function(a,b) {
if(a<b) return -1; //a를 b보다 앞에 정렬
if(a>b) return 1; //b를 a보다 앞에 정렬
if(a===b) return 0; //변경하지 않음
});
//[1, 2, 4, 6, 8, 19, 30]
上記のコードを開発者コンソールのdebuggerに返すと、パラメータaはarr[1]
を含み、パラメータbはarr[0]
を含み、両者を比較する.すなわち、パラメータaは以下の要素を含み、bは現在の要素を含む.降順
降順はreturn値の前に見られた昇順とは逆です.
let numArr = [4, 2, 6, 8, 1, 19, 30];
numArr.sort(function(a,b) {
if(a<b) return 1; //b를 a보다 앞에 정렬
if(a>b) return -1; //a를 b보다 앞에 정렬
if(a===b) return 0; //변경하지 않음
});
//[30, 19, 8, 6, 4, 2, 1]
数値ソートの簡略化ソート関数の戻り値は、任意の数値を返します.正の値を返すと、1番目のファクタは2番目のファクタより大きく、負の値を返すと、1番目のファクタは2番目のファクタより小さくなるので、数値を比較するときに戻り値をより簡潔に入れることができます.
(InfinityとNaNが含まれていない場合)
let numArr = [3, 6, 12, 40, 2, 25, 37];
오름차순
numArr.sort(function(a,b) {
return a-b;
});
//[1, 2, 4, 6, 8, 19, 30]
내림차순
numArr.sort(function(a,b) {
return b-a;
});
//[30, 19, 8, 6, 4, 2, 1]
Reference
この問題について([javascript]arr.sort()で配列をソート), 我々は、より多くの情報をここで見つけました https://velog.io/@bining/arr.sortテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol