JavaScriptの配列のソート

ソート()メソッドは、メソッドの最も強力なアレイのうちの1つです。

配列のソート

アルファベット配列をソートするソート()メソッド:

VaRの果物= [ "バナナ"、 "オレンジ"、 "アップル"、 "マンゴー" ]; 
fruits.sort();             // 果物の要素をソートします

リバースアレイ

配列の要素を反転させる()メソッドを逆。

あなたは降順で配列をソートするためにそれを使用することができます。

VaRの果物= [ "バナナ"、 "オレンジ"、 "アップル"、 "マンゴー" ]; 
fruits.sort();             // 果物の中の要素の並べ替えのための 
fruits.reverseを();          //は、要素の順序を逆に

デフォルトでは、ソート()関数の文字列値を順にソートされています。

この関数は、(「アップル」は「バナナ」の前にソートされます)文字列に適しています。

「2」は「1」よりも大きいのでしかし、数字は文字列をソートする場合は、「25」、「100」より大きい

この理由のため、値をソートしたときにソート()メソッドは、誤った結果を生成することができます。

のは、比関数によってこの問題を解決してみましょう:

VaRの点= [40、100、1、5、25、10 ]。
points.sort(関数(B){ 返す - B})。

降順に配列に同一の技術を使用します。

VaRの点= [40、100、1、5、25、10 ]。
points.sort(関数(B){ 戻り B - A})。

 

比関数

別の機能を比較することを目的とソート順を定義することです。

比較関数は、パラメータに応じて、負、ゼロまたは正を返すべきです。

関数(B){リターンAB}

場合  時間()ソート機能は、2つの値を比較し、値が比較関数に送られ、その値に基づいている(負、ゼロまたは正)の戻り値をソート。

例:

40と100を比較すると、並べ替え()メソッドは、比較関数(40100)の関数を呼び出します。

この関数は、40-100を計算し、そして-60(負)を返します。

ソート機能は、100よりも低い値に40をソートします。

あなたはアルファベット順に次のコードの断片とテスト値を使用することができます。

<ボタンのonclick = "myFunction1()">以字母顺序排序</ボタン> 
<ボタンのonclick = "myFunction2()">以数字顺序排序</ボタン> 

<PのID = "デモ"> </ P> 

<SCRIPT > VARの点= [40、100、1、5、25、10 ]。
document.getElementById( "デモ")のinnerHTML = 点; 関数myFunction1(){ 
        points.sort()。
        document.getElementById( "デモ")のinnerHTML = 点; 
} 関数myFunction2(){ 
        points.sort(関数(B){ 返す   - B})。
        document.getElementById( "デモ")。innerHTMLのは= ポイント。
} </ SCRIPT>




 

 

ランダムな順序ソートされた配列

VaRの点= [40、100、1、5、25、10 ]。
points.sort(関数(B){ 戻り 0.5 - Math.random()})。

 

 

最高(または最低)配列の値を探します

JavaScriptは、組み込み関数のアレイ内の最大値または最小値を見つけるために、アレイを提供しません。

配列がソートされた後、しかし、あなたは最高または最低値にインデックスを使用することができます。

昇順順序:

VaRのポイント= [40、100 ,. 1 ,. 5、25、10 ]; 
points.sort(関数(A、B)は{ 返す - B}); 

//は今ポイント[0]の最小値が含ま
// ポイント[ points.length-1]は最高値が含まれています

 

降順で:

VaRのポイント= [40、100 ,. 1 ,. 5、25、10 ]; 
points.sort(関数(A、B){ 戻り B - A}); 

//は今ポイント[0]の最高値が含ま
// ポイント[ points.length-1]は最低の値を含みます

あなたが唯一の最大値または最小値を見つける必要がある場合は、配列全体が一種の非常に非効率的な方法です。

Math.max配列を使用します()

あなたは使用することができ  、アレイ内の最高値を見つけるために、Math.max.applyを:

関数myArrayMax(ARR){
     返す(Math.max.applyをヌルARR)。
}

 

 

Math.max.apply([1、2、3 ]) に等しい  Math.max(1、2、3) 。

Math.min配列を使用します()

あなたは使用することができ  、アレイ内の最小値を見つけるために、Math.min.applyを:

関数myArrayMin(ARR){
     返す(Math.min.applyをヌルARR)。
}

 

 

Math.min.apply([1、2、3 ]) に等しい  Math.min(1、2、3) 。

私の最小/最大JavaScriptメソッド

最速の解決策は、「自家製」のアプローチを使用することです。

アレイを介してこの関数反復は、見つかった最高値と各値を比較します。

例(マックスを探します)

関数myArrayMax(ARR){
     VARの LEN = arr.lengthの
     VARの最大= - 無限。
    一方、(len-- ){
         場合(ARR [LEN]> MAX){ 
            最大 =のARR [LEN]。
        } 
    } 
    リターン最大。
}

 

 

アレイを介してこの関数反復は、見つかった最も低い値と各値を比較します。

例(最小を探します)

関数myArrayMin(ARR)は{
      = lenのarr.length
     分= 無限。
    一方、(len-- ){
         場合(ARR [LEN] < 分){  =のARR [LEN]。
        } 
    } 
    戻り分。
}

 

 

オブジェクトの配列をソートします

オブジェクトのJavaScriptの配列は、多くの場合、次のとおりです。

VAR車= [ 
{タイプ: "ボルボ"、年:2016 }、
{タイプ: "サーブ"、年:2001 }、
{タイプ: "BMW"、年:2010}]。

 

オブジェクト・データ・タイプは異なる特性を有する場合でも、ソート()メソッドは、まだ配列をソートするために使用することができます。

解決策はして属性値比較機能を比較することです。

cars.sort(関数(B){ 戻り a.year - b.year})。

 

 

少し複雑な文字列プロパティを比較します。

cars.sort(関数(B){
       VAR X = a.type.toLowerCase();
       VARの Y = b.type.toLowerCase();
       場合(X <Y){ 戻り -1 ;}
       場合(X> Y ){ リターン 1 ;}
       戻り 0 ; 
});

出典:www.sysoft.net.cn、プラスV:15844800162深交換

おすすめ

転載: www.cnblogs.com/sysoft/p/11689816.html