JavaScriptで配列を操作する

Pocket

少し前にJavaScriptで配列をシャッフルすることを考えましたが、同じようにして配列を操作するいくつかのサンプルを考えました。

uniqueは配列内の要素の重複を削除して、ユニークにします。

Array.prototype.unique = function() {
  //配列内の要素をユニークにする。順序を保持する。
  //配列に影響しない。
  var array_length, new_array, check, i;
  array_length = this.length;
  new_array = [];
  check = [];
  for (i = 0; i < array_length; i++) {
    if (!check[this[i]]) {
      check[this[i]] = true;
      new_array.push(this[i]);
    }
  }
  return new_array;
}

ExcelのSUM、AVERAGE、MEDIAN、MODEを再現してみました。

Array.prototype.sum = function() {
  //要素を合計する。
  //配列に影響しない。
  var array_length, value, i;
  array_length = this.length;
  value = 0;
  for (i = 0; i < array_length; i++) {
    value += this[i];
  }
  return value;
}
Array.prototype.average = function() {
  //要素の平均を求める。
  //配列に影響しない。
  var array_length, value, i;
  array_length = this.length;
  value = 0;
  for (i = 0; i < array_length; i++) {
    value += this[i];
  }
  return value / array_length;
}
Array.prototype.median = function() {
  //要素の中央値(メジアン)を求める。
  //配列に影響しない。
  var array_length, value, mid;
  array_length = this.length;
  new_array = this.slice(0);
  new_array.sort(function(a, b) {
    return a - b;
  });
  mid = Math.floor(array_length / 2);
  if (array_length % 2 == 1) {
    return new_array[mid];
  } else {
    return (new_array[mid - 1] + new_array[mid]) / 2;
  }
}
Array.prototype.mode = function() {
  //要素の最頻値(モード)を求める。
  //配列に影響しない。
  var array_length, count, i, max, value;
  array_length = this.length;
  count = [];
  for (i = 0; i < array_length; i++) {
    if (count[this[i]]) {
      count[this[i]] ++;
    } else {
      count[this[i]] = 1;
    }
  }
  max = 0;
  for (i = 0; i < count.length; i++) {
    if (count[i] > max) {
      max = count[i];
      value = i;
    }
  }
  if (value > 1) {
    return value;
  } else {
    return "Error"; //重複がない場合はエラー。
  }
}

[ 2014年9月22日 | カテゴリー: JavaScript | タグ: ]

« | »

コメントを残す

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

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報