JAvascriptにおけるsort()の使い方

1781 ワード

sort()メソッドは、配列をソートするために使用されます.
一、デフォルト
デフォルトでは、sort()メソッドは配列アイテムを昇順に並べます.ソートを実現するために、sort()メソッドは各配列項目のtoString()変換メソッドを呼び出し、その後
得られた文字列を比較し、ソート方法を決定しました.次のようになります.

var arr = ["orange","apple","banana"];
arr.sort();
console.log(arr);//  ["apple", "banana", "orange"]

ps:ただし、配列の各項目が数値であってもsort()メソッドは文字列であり、以下のように比較されます.

var arr = [0,1,8,10,18];
arr.sort();
console.log(arr);//  [0, 1, 10, 18, 8]

二、数値を並べ替える
sort()メソッドは、パラメータとして比較関数を受信することができる.
比較関数は、2つのパラメータを受信します.1番目のパラメータが2番目のパラメータの前にある場合は負の数を返し、2つのパラメータが等しい場合は0を返し、1番目のパラメータが2番目の後にある場合は正の数を返します.

function compare(a, b){
    return a - b;//a - b           ; b-a          
}
var arr = [0,1,8,10,18];
arr.sort(compare);
console.log(arr);//  [0, 1, 8, 10, 18]

三、あるオブジェクトの属性によって配列を並べ替える
まず、属性名を受信する関数を定義し、この属性名に基づいて比較関数を作成します.この関数の定義は次のとおりです.

function createComparisonFunction(propertyName){
    return function(object1, object2){
        var a = object1[propertyName];
        var b = object2[propertyName];
         return a-b;//           ,         
    }
}

内部関数がpropertyNameパラメータを受信すると、指定した属性の値を取得するためにカッコ表現が使用されます.
上記の関数は、次の例のように使用できます.

var data = [{name:"lisi", age: 32}, {name:"zhangsan", age: 22}];
data.sort(createComparisonFunction("name"));
console.log(data[0].name);//lisi

data.sort(createComparisonFunction("age"));
console.log(data[0].name);//zhangsan