JavaScriptオブジェクトのソート方法 array_javascriptスキル

WBOY
リリース: 2016-05-16 15:35:53
オリジナル
1377 人が閲覧しました

この記事の例では、JavaScript オブジェクト配列のソート方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

JavaScript の配列ソート関数 sort メソッドは、デフォルトでは、ASCII 文字順序に従って昇順にソートします。
arrayobj.sort(sortfunction);

パラメータ:sortFunction

オプション。要素の順序を決定するために使用される関数の名前です。このパラメータを省略した場合、要素は ASCII 文字の昇順でソートされます。

sort メソッドは Array オブジェクトを適切に並べ替えます。実行中に新しい Array オブジェクトは作成されません。

sortfunction 引数に関数が指定されている場合、その関数は次の値のいずれかを返す必要があります:

渡された最初のパラメータが 2 番目のパラメータより小さい場合は負の値。
両方の引数が等しい場合はゼロ。
最初の引数が 2 番目の引数より大きい場合は正の値。

上記の方法は一次元のソートには非常に便利ですが、SQL ステートメントの ORDER BY のような複数のキー値のソートを行うにはどうすればよいでしょうか?

多次元配列のマルチキー値の並べ替えはより複雑にする必要がありますが、それを解決するためにループを使用する必要はありません。実際の解決策は同じです。

番号:

次の例は、SQL ステートメントの ORDER BY col5、col9、col7 のように、数値の多次元配列を列 5、列 9、列 3 の順に並べ替えます。数値の場合は、2 つの項目を直接減算し、その結果を戻り値として使用できます。

<script language=javascript>
 var myArray = new Array();
 for(var i=0;i<10;i++ ){
 myArray[i]=new Array();
 myArray[i][0]=Math.floor(Math.random()*10); 
 myArray[i][1]=Math.floor(Math.random()*10);
 myArray[i][2]=Math.floor(Math.random()*10);
 myArray[i][3]=Math.floor(Math.random()*10);
 myArray[i][4]=Math.floor(Math.random()*10);
 myArray[i][5]=Math.floor(Math.random()*10);
 myArray[i][6]=Math.floor(Math.random()*10);
 myArray[i][7]=Math.floor(Math.random()*10);
 myArray[i][8]=Math.floor(Math.random()*10);
 }
 myArray.sort(
   function(x, y) {
    if(x[4]!=y[4]){
      return x[4]-y[4];
    } else if(x[8]!=y[8]){
      return x[8]-y[8];
    } else if(x[6]!=y[6]){
      return x[6]-y[6];
    } else {
      return 1;
    }
  }
  );
 for(var i=0;i<myArray.length;i++ )...{
 document.write(myArray[i].join(",") + "<br/>");
 }
</script>
ログイン後にコピー

キャラクター:

文字の場合、sortFunction 内の項目は数値のように直接減算することができません。戻り値を満たすためには、str1.localeCompare(str2) メソッドを呼び出して比較する必要があります。以下は、多次元配列の列 1 と列 2 をソートする場合です。

function sortFunction(array) {
 return array.sort( function(x, y) ...{
 return (x[0]==y[0])&#63;(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0]))
 });
}

ログイン後にコピー

つまり、arrayObject.sort(sortFunction) のソート関数は依然として非常に強力であり、最終的には SQL ステートメントの ORDER BY と同じ機能を実現できます。

この記事が JavaScript プログラミングのすべての人に役立つことを願っています。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート