■正拳突きの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に戻る