JavaScriptでExcelのRANK関数を再現

Pocket

配列中の順位を調べる方法を考えました。
ExcelにRANK関数がありますので、これを再現してみます。

サンプルは下の通りです。
updownに従ってarrs内の数値を並べ替えたとき、valueが何番目に位置するかを返します。
updownは、省略または0は降順(最多が1位)、0以外は昇順(最少が1位)となります。

function rank(value, arrs, updown){
    var i, thisrank, array_length, sign;
    if(typeof(updown) == "undefined"){
        updown = 0;
    }
    sign = updown == 0 ? 1 : -1;
    thisrank = 1;
    array_length = arrs.length;
    for(i = 0; i < array_length; i ++){
        if(sign * (arrs[i] - value) > 0){
            thisrank ++;
        }
    }
    return thisrank;
}

例えば次のようにします。
「20」は配列の中で昇順に数えると2番目なので「2」が表示されます。

alert(RANK(20, [20, 40, 40, 10, 50], 1); // "2"

[ 2013年10月29日 | カテゴリー: JavaScript | タグ: , , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報