JavaScript sort()ソート
1069 ワード
sort()文法:
arrayObject.sort(fn);
パラメータfnは任意であり、空の場合は、配列中の要素をアルファベット順に並べ替え、正確には、文字コード順に並べ替えられます.So,厳密な並べ替えを行うには,配列の要素を文字列に変換して並べ替えます.
他の標準によって並べ替えたいなら、比較関数を提供しなければなりません.間違いなく関数です.関数のために二つのパラメータを提供します.個人的な理解は並べ替えの中の二つの要素です.なぜこのような推測がありますか?ルールを見てください.
mがnに等しいなら、0を返します.
mがnより大きいと0より大きい値を返します.mはnの後に現れます.
はっきり言って、関数fnが戻ってきた値がfalseであれば、昇順で並べ替えられ、もしtrueに戻ったら、降順で並べ替えられます.(mとnは並べ替え順で比較します)
でも、fnで書いたらどうなりますか?
ランダムに並べ替えたいなら?
もう一度JSの柔軟さを感嘆します.一つのsortで並べ替えができます.
arrayObject.sort(fn);
パラメータfnは任意であり、空の場合は、配列中の要素をアルファベット順に並べ替え、正確には、文字コード順に並べ替えられます.So,厳密な並べ替えを行うには,配列の要素を文字列に変換して並べ替えます.
他の標準によって並べ替えたいなら、比較関数を提供しなければなりません.間違いなく関数です.関数のために二つのパラメータを提供します.個人的な理解は並べ替えの中の二つの要素です.なぜこのような推測がありますか?ルールを見てください.
function fn (m,n){
if(m<n)
return -1;// , -1
else if(m>n)
return 1;// , 1
else return 0;// , 0
}
簡素化後:function fn (m, n) {
return m-n;
}
mがnより小さいと0より小さい値を返します.mはnの前に現れます.mがnに等しいなら、0を返します.
mがnより大きいと0より大きい値を返します.mはnの後に現れます.
はっきり言って、関数fnが戻ってきた値がfalseであれば、昇順で並べ替えられ、もしtrueに戻ったら、降順で並べ替えられます.(mとnは並べ替え順で比較します)
でも、fnで書いたらどうなりますか?
function fn (m, n) {
return m < n;
}
fnの戻り値がfalseである場合、降順で並べ替えられます.trueを返すと、並べ替えが昇順になります.(mとnは並べ替え順で比較します)ランダムに並べ替えたいなら?
function fn () {
return 0.5 - Math.random();
}
Math.random()は0から1までの乱数を返します.0.5-Math.random()はランダムにtrueとfalseを返します.このようにランダムに並べ替えられます.もう一度JSの柔軟さを感嘆します.一つのsortで並べ替えができます.