JAvascriptにおけるsort()の使い方
1781 ワード
sort()メソッドは、配列をソートするために使用されます.
一、デフォルト
デフォルトでは、sort()メソッドは配列アイテムを昇順に並べます.ソートを実現するために、sort()メソッドは各配列項目のtoString()変換メソッドを呼び出し、その後
得られた文字列を比較し、ソート方法を決定しました.次のようになります.
ps:ただし、配列の各項目が数値であってもsort()メソッドは文字列であり、以下のように比較されます.
二、数値を並べ替える
sort()メソッドは、パラメータとして比較関数を受信することができる.
比較関数は、2つのパラメータを受信します.1番目のパラメータが2番目のパラメータの前にある場合は負の数を返し、2つのパラメータが等しい場合は0を返し、1番目のパラメータが2番目の後にある場合は正の数を返します.
三、あるオブジェクトの属性によって配列を並べ替える
まず、属性名を受信する関数を定義し、この属性名に基づいて比較関数を作成します.この関数の定義は次のとおりです.
内部関数がpropertyNameパラメータを受信すると、指定した属性の値を取得するためにカッコ表現が使用されます.
上記の関数は、次の例のように使用できます.
一、デフォルト
デフォルトでは、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