2012.11.28 | 

こんにちは、muchoです。
たまたま見かけたソースの中に便利なものがあったのでメモ。

配列から指定した値を取り除く!というものです。
spliceの変形です。



  Array.prototype.remove = function() {
    var i, j, l, m;
    l = arguments.length;
    i = 0;
    while (i < l) {
      m = this.length;
      j = 0;
      while (j < m) {
        if (arguments[i] === this[j]) {
          this.splice(j, 1);
          m--;
        } else {
          j++;
        }
      }
      i++;
    }
    return this.length;
  };


これだと、prototypeを書き換えてしまうので、それもどうかと思いつつ、
この機能がもともと実装されてたらいいのになーと思ったり。

使う時はこんな感じで。



  var ary = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  ary.remove(5);
  ary.remove(8, 9, 0);
  console.log(ary); //[1, 2, 3, 4, 6, 7]