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

写真

メタ情報