JavaScript の配列の要素を削除するには、delete や splice を使う方法がありますが、この場合は要素番号を指定する必要があります。
削除対象である要素の要素番号を求めるのが面倒だったので、削除したい要素の値を与えることで削除ができるように Array クラスを拡張することにしました。
拡張した Array クラスは、与える要素が文字や数値だけでなく、配列や連想配列にも対応しています。
/**
* 配列に対象オブジェクトが含まれていたら削除する
*
* @param {Object} 削除したいオブジェクト
* @return {Object} 削除したオブジェクト。含まれていない場合は false
*
* @example
* >>> var test = [1, 2, [3, 4], {foo: "bar"}, [5, 6]];
* >>> test.remove([3, 4]);
* >>> console.log(test)
* [1, 2, {foo: "bar"}, [5, 6]]
* >>> test.remove({foo: "bar"});
* >>> console.log(test);
* [1, 2, [5, 6]]
*
*/
Array.prototype.remove = function(value) {
for (var i in this)
if (this.hasOwnProperty(i) && this[i].toString() === value.toString())
return this.splice(i, 1)[0];
return false;
};