【JavaScript】配列sort()並び替え規則


Javascriptの配列Arayでは、sort関数は主に配列の要素を並べ替えるために使用される.
その文法は:
arrayObject.sort(sortby)
ここでsortbyは並べ替えの比較関数で、デフォルトは空です.配列中の要素をアルファベット順に並べ替えることを表しています.この点を実現するには、まず配列の要素を文字列に変換して比較します.しかし、配列の順序を制御するために指定された比較関数を指定することもできます.
一、デフォルトの状況
アルファベット順に並べ替えて、たとえば次のようにします.
<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")
document.write(arr.sort())

</script>
二、数字の大きさで並べ替えます.
<script type="text/javascript">

function sortNumber(a,b)
{
return a - b
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))

</script>
三、オブジェクトの属性に従って並べ替えます.
今Person類があると仮定して、身長、体重、年齢の三つの属性を持っています.年齢によって並べ替えて、年齢は同じで、身長を比べて、身長は同じで、体重を比較します.
最初にPersonクラスを定義します.
function Person(n, s, w, a){
                this.name = n; //      
                this.stature = s; //  
                this.weight = w; //  
                this.age = a; //                
}
比較関数を定義:
function compareFunc(x, y){
	if (x.age > y.age) {
		return 1;
	} else if (x.age == y.age) { //    ,    
		if (x.stature > y.stature) {
			return 1;
		} else if (x.stature == y.stature) { //    ,    
			if (x.weight > y.weight) {
				return 1;
			} else if (x.weight == y.weight) {
				return 0;
			} else {
				return -1;
			}
		} else {
			return -1;
		}
	} else {
		return -1;
	}
}
テスト:
//           ,    3 if   
//  3 Person    ,           ,    
//           
var p1 = new Person("p1", 180, 55, 22);
var p2 = new Person("p2", 180, 60, 22);
var p3 = new Person("p3", 180, 58, 22);
//    
var persons = [p1, p2, p3];
//   sort()        a,  a            ,    
persons.sort(compareFunc);
//           
for (var i = 0; i < persons.length; i++) {
	document.write(persons[i].name + "," + persons[i].stature + "," + persons[i].weight + "," + persons[i].age + "<br />");
}
最後の出力の結果は:
p 1,180,55,22
p 3,180,58,22
p 2,180,60,22
結果はまったく正しい
以上は配列の中で関数sort()の中で関数のいくつか考えを比較するので、その他の更に複雑な並べ替えの需要に出会う時、具体的な情況によって並べ替えの規則を編纂するだけでいいです.柔軟に応用します.