|
<script language="JavaScript" type="text/javascript">
<!--
//copyright(C) 2005 あう http://www5c.biglobe.ne.jp/~horoau/
//ver1.1
function comp()
{
this.number = function(a,b)
{if(!isNaN(a) && !isNaN(b))
{return a-b;}
else if(isNaN(a) && !isNaN(b))
{return 1;}
else if(!isNaN(a) && isNaN(b))
{return -1;}
else
{if(a+"" === b+"")
{return 0;}
return (a+"" > b+"")? 1 : -1;}}
this.r_number = function(a,b)
{if(!isNaN(a) && !isNaN(b))
{return b-a;}
else if(isNaN(a) && !isNaN(b))
{return 1;}
else if(!isNaN(a) && isNaN(b))
{return -1;}
else
{if(a+"" === b+"")
{return 0;}
return (a+"" > b+"")? -1 : 1;}}
this.string = function(a,b)
{if(a+"" === b+"")
{return 0;}
return (a+"" > b+"")?1 : -1;}
this.r_string = function(a,b)
{return comp.string(a,b)*(-1);}
this.mix = function(a,b)
{if(!isNaN(a) && !isNaN(b))
{return a-b;}
else if(isNaN(a) && !isNaN(b))
{return ("0" >= a+"")?-1 : 1;}
else if(!isNaN(a) && isNaN(b))
{return ("0" >= b+"")?1 : -1;}
return comp.string(a,b);}
this.r_mix = function(a,b)
{if(!isNaN(a) && !isNaN(b))
{return b-a;}
else if(isNaN(a) && !isNaN(b))
{return ("0" >= a+"")?1 : -1;}
else if(!isNaN(a) && isNaN(b))
{return ("0" >= b+"")?-1 : 1;}
return comp.r_string(a,b);}
this.volume = function(a,b)
{if(a.match(/^\D*/i)+"" == b.match(/^\D*/i)+"")
{return a.match(/\d+/i) - b.match(/\d+/i);}
else
{return comp.number(a,b);}}
this.r_volume = function(a,b)
{if(a.match(/^\D*/i)+"" == b.match(/^\D*/i)+"")
{return b.match(/\d+/i) - a.match(/\d+/i);}
else
{return comp.r_number(a,b);}}}
comp = new comp();
// -->
</script>
|
[ 2005.2.25 ] ver.1.1 |
|
要望あるまで気付かないところだったけど
例えば書籍とかの巻数順に並べるときだとか
今回追加したような関数が必要になるんだね。
やっぱり実際に使ってみないと気付かない点ってのも
多々あるようで利用者の声って大事だよね。
結構手間かかるかなっても思ったけど
やってみると案外簡単な関数で仕上がった気がする。
|
|
|
[ 2005.1.21 ] ver.1.0 |
|
他のソートの比較関数考えてたついでにちょっと作ってみたって感じのクラス。
このくらいのものならクラスにしなくてもユーザ定義関数集でも良さそうだけど
やっぱりクラスにした方が名前がかぶることを配慮する対象が少なくなるし
一応クラスライブラリって言ってるわけだし。
それにしても最初は比較関数って何かややこしいイメージあったけど
単純に比べた2つのうちどっちを上にするかってだけなんだよね。
ホントはもっといろいろな条件の比較関数も考えたんだけど
実際作ろうと思うといろんなパターンがあり過ぎて
全部作るとクラス自体がややこしくなりそうなんで基本的なものだけにしておいた。
単位まで判別してソートするなんてことも可能なんだけどね。
いったいどれだけの種類の単位があるんだって話になってくるし。
何か要望でもあったらメールにて受け付けてます。
|
|
ウェブ木箱
copyright(C) 2005 あう