JS学習に深く入る配列オブジェクトの並べ替え操作例


本論文の実例は、JSの深く勉強する配列オブジェクトの並べ替え機能を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
JavaScriptは多次元配列、対象配列の順序付けを実現しています。実用的なのは元のsort()方法で、配列の要素を並べ替えるために使われています。
sort()メソッドは配列の要素を並べ替えるために使用されます。文法は以下の通りです
arrayObject.sort(sortby)
は、行列への参照です。配列は元の配列で並べ替えられ、コピーは生成されません。
この方法を呼び出したときにパラメータが使用されていない場合は、配列内の要素をアルファベット順に並べ替えます。より正確な点は文字コードの順序で並べ替えられます。この点を達成するには、まず配列の要素を文字列に変換して比較します。
他の基準にしたがって並べ替えたい場合は、比較関数を提供する必要があります。この関数は2つの値を比較して、この2つの値の相対的な順序を説明するための数字を返します。比較関数は2つのパラメータaとbを持つべきで、その戻り値は以下の通りである。
  • aがbより小さい場合、順序付けされた配列の中でaはbより前に現れるべきであり、0より小さい値を返す。
  • aがbに等しいなら、0を返します。
  • aがbより大きいと0より大きい値を返します。
  • 
    function NumAscSort(a,b)
    {
     return a - b;
    }
    function NumDescSort(a,b)
    {
     return b - a;
    }
    var arr = new Array( 3600, 5010, 10100, 801); 
    arr.sort(NumDescSort);
    alert(arr);
    arr.sort(NumAscSort);
    alert(arr);
    
    
    sort(fun)は並べ替え規則関数を受け入れています。この関数は2つの数字の大きさを比較します。私達の対象配列は並べ替えられています。実際の原理も同じです。
    数字の大きさを比較しないなら、このようにしても良いです。
    
    var myarray=["Apple", "Banana", "Orange"]
    myarray.sort()
    
    
    配列はSOrt()を直接呼び出した後、配列はアルファベット順に配列中の要素を並べ替えます。より正確な点を言って、文字コードの順序で並べ替えられます。
    オブジェクト配列の並べ替えに対して、まず比較関数を構成する関数を書きます。
    
    //by                
    //                             
    var by = function(name){
     return function(o, p){
      var a, b;
      if (typeof o === "object" && typeof p === "object" && o && p) {
       a = o[name];
       b = p[name];
       if (a === b) {
        return 0;
       }
       if (typeof a === typeof b) {
        return a < b ? -1 : 1;
       }
       return typeof a < typeof b ? -1 : 1;
      }
      else {
       throw ("error");
      }
     }
    }
    
    
    並べ替えする配列:
    
    var employees=[]
    employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
    employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
    employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
    employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
    
    
    直接呼び出し関数:
    
    employees.sort(by("age"));
    
    
    ここでは、オブジェクト配列の並べ替えが基本的に実現されています。どのように複数のキーを並べ替えますか?意味は最初にageを並べ替えることです。もしageが同じなら、nameを比較します。
    この時、私達は更にby関数を修正して、第二のパラメータを受け入れるようにします。主要なキーの値が一致すると、もう一つのcompre方法が呼び出されて決められます。
    
    //by                            
    //                            
    // o[age]   p[age]    ,             
    var by = function(name,minor){
     return function(o,p){
      var a,b;
      if(o && p && typeof o === 'object' && typeof p ==='object'){
       a = o[name];
       b = p[name];
       if(a === b){
        return typeof minor === 'function' ? minor(o,p):0;
       }
       if(typeof a === typeof b){
        return a < b ? -1:1;
       }
       return typeof a < typeof b ? -1 : 1;
      }else{
       thro("error");
      }
     }
    }
    employees.sort(by('age',by('name')));
    
    
    はい、今は安心して使えます。読めないなら、直接にcopyというby関数をあなたのアプリケーションに呼び出してもいいです。
    興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
    PS:ここでは並べ替えに関するデモンストレーションを紹介します。
    オンラインアニメーションのデモ挿入/選択/発泡/帰結/ヒル/高速ソートアルゴリズムプロセスツール:
    http://tools.jb51.net/aideddesign/paixu_システム
    もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScript配列操作技術のまとめ」、「JavaScriptソートアルゴリズムのまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」および「JavaScriptエラーとデバッグテクニックのまとめ
    本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。