■正拳突きのHP:プログラムチップス(javascript)複数キーでのソート

作成日:2009/02/03
作成環境:windowsXP IE7

ボタンを押すとソートしてアラートで結果を表示します。

ソートキー(var sortKeys;)をグローバル変数として宣言してるけど、クラス変数みたいにするにはどうするんだろう?

function compare( a, b ){
	for (var i = 0; i < sortKeys.length; i++) {
		var key = sortKeys[i];

		if (a[key] == b[key]) {
			continue;
		}

		if (a[key] > b[key]) {
			return 1;
		}else{
			return -1;
		}
	}
	return 0;
}

function myBean(name, age) {
	this.name = name;
	this.age = age;
}

function aryToString(ary) {
	var tmp = "";
	for (var i = 0; i < ary.length; i++) {
		if (tmp.length != 0) {
			tmp += ", ";
		}
		tmp += "{name=" + ary[i].name + ", age=" + ary[i].age + "}";
	}
	return tmp;
}

function sortTest() {
	var ary = new Array();

	ary[0] = new myBean("HIDEYOSHI", 18);
	ary[1] = new myBean("HIDEYOSHI", 10);
	ary[2] = new myBean("arayama", 99);
	ary[3] = new myBean("arayama", 0);

	alert(aryToString(ary));
	sortKeys = new Array("name", "age");
	ary = ary.sort(compare);
	alert(aryToString(ary));

	sortKeys = new Array("age", "name");
	ary = ary.sort(compare);
	alert(aryToString(ary));
}

var sortKeys;



TOPに戻る