JavaScriptにおけるsortのソート問題

3640 ワード

sort方法:要素が順序付けされているarrayオブジェクトを返します.
arrayobj.sort(sortfunction)
  • アラヨbj必須オプションです.任意のarrayオブジェクト
  • sortfunctionオプションがあります.は、関数の並べ替えを決定するための名前です.このパラメータが省略されると、ASCII文字順に要素が昇順に配列されます.
  • ソト関数は、arrayオブジェクトを適切に並べ替え、実行中に新たなarrayオブジェクトを作成しません.【説明】ソト関数は既存の配列を並べ替えて返します.並べ替え後の元の配列オブジェクトです.次に例を書きます.
    <script>
        var array[1,4,5,7]
        a.sort();
        alert(a);
    script>
    出力結果:1、4、5、7はみんなが見られます.出力の結果はちょうど小さい時から大きい順に並んでいます.次にデータを変えます.
    <script>
        var array[5,41,7,18]
        a.sort();
        alert(a);
    script>
    出力結果:18,41,5,7の結果は金がないことを示しています.なぜ間違えましたか?
    デフォルトでは、ソト関数はASCII文字で並べ替えられています.
    実際に.コンピュータに表示されているのは私たちが入力した数値ではなく、ここにコードがあります.もし私たちがパソコンにaを入力すると、パソコンに97と表示され、97はバイナリに変換されます.よく使われるASCII文字の対応-a-97-A——65-0--48-1——49は上から类推して、2はASCIIの中で49で、bは98で、Bは66です.
    上記の例に戻ると、なぜ18、41、5、7が出力されますか?元々はASCII文字の並べ替えで、対応は比較です.18と5を比べると、実は1と5と比べて、5は一桁しかないので、一位しか比べられません.1<5ですから、間違った答えが出ました.問題はどう解決しますか?
    上記で述べたように、パラメータを省略すると、デフォルトはASCII文字で並べ替えられます.つまり、パラメータがあるということは、デフォルトではASCII文字で並べ替えられていません.
    次にパラメータのある例を書きます.
    <script>
    sort a=[5,41,7,18];
    function  paixu(m,n)
    {
        if(m>n)
            return 1;
        else if(mreturn -1;
        else
            return 0;
    }
    a.sort(paixu);
    alert(a);
    script>
    表示結果:5,7,18,41
    ソートは順序付けという関数をパラメータとして受け入れました.順序付けという関数によって並べ替えられます.ASCII文字コードによって並べ替えられなくなりました.
    パラメータがあったらどうやって並べ替えますか?【説明】まず、5と41をmとnに値を伝えます.5と41を比較すると、この時、5は41より小さいので、-1に戻ります.sortはこの戻り値に基づいて、負の数は前の数が後の数より小さいと思っています.
    上のほうが分かりやすいです.次の中に簡単な並べ替えを書いてください.
    <script>
    sort a=[5,41,7,18];
    function  paixu(m,n)
    {
        return m-n;
    }
    a.sort(paixu);
    alert(a);
    script>
    出力結果:5、7、18、41
    並べ替えの問題はここまで紹介します.私の文章があなたの役に立ちますように.