[javascript] 配列を使ってテーブルデータのソート
javascriptで配列を使ってテーブルデータのソートをしたいです。
[
{"t":"a", "n":1},
{"t":"b", "n":1},
{"t":"a", "n":2},
{"t":"a", "n":3},
{"t":"b", "n":2}
]
上記をソートして下記の様にしたいです。
{"t":"a", "n":1},
{"t":"a", "n":2},
{"t":"a", "n":3},
{"t":"b", "n":1},
{"t":"b", "n":2}
]
以下の様に書いてみました。
<html>
<head>
<SCRIPT LANGUAGE='JavaScript1.2'><!--
var list1 = [
{"t":"a", "n":1},
{"t":"b", "n":1},
{"t":"a", "n":2},
{"t":"a", "n":3},
{"t":"b", "n":2}
];
list1.sort(function(a, b) {return a.t-b.t||a.n-b.n});
var text1="";
for(var i=0; i<list1.length; i++) {
text1 += "<br>" + list1[i].t + " " + list1[i].n;
}
function init(){
document.getElementById("o").innerHTML = text1;
}
//--></script>
</head>
<body onload="init()">
<div id="o"></dev>
</div>
</html>
実行すると下記の様に表示されました。
a 1
b 1
a 2
b 2
a 3
期待してる結果は以下です。
a 1
a 2
a 3
b 1
b 2
なにが悪いのでしょうか?
因みに、テーブルデータが以下の様に数値だけのの場合、
var list1 = [
{"t":1, "n":1},
{"t":2, "n":1},
{"t":1, "n":2},
{"t":1, "n":3},
{"t":2, "n":2}
];
実行結果は
1 1
1 2
1 3
2 1
2 2
の様になりました。
数値の場合、
list1.sort(function(a, b) {return a.t-b.t||a.n-b.n});
の式で問題ないのでしょうが、
文字列の場合、この式ではダメなんだろうなと考えてます。
以上、よろしくお願いいたします。