Array#remove(Array#indexOfの第二引数の使いかた)
indexOf - MDNによると、Array#indexOfの第二引数を指定すると、途中から検索できるらしい。
これを使って、Array#removeを実装すると、毎回、全部をindexOfで探索するよりかなり速くすることができる。
Array.prototype.remove = function remove() { var self = this; Array.forEach(arguments, function (target) { var current = 0; while (~(current = Array.indexOf(self, target, current))) Array.splice(self, current, 1); }); return this; }; Array.remove = function remove(target) { return Array.prototype.remove.apply(target, Array.slice(arguments, 1)); }; console.log([1, 2, 3, 4, 5, 6, 1, 1, 2, 3, 4].remove(3, 1)); // [2, 4, 5, 6, 2, 4] console.log(Array.remove({0:1, 1:2, 2:3, 3:3, 4:1, length: 5}, 3));