如何实现与ArrayList.remove(o)
完全相同的功能?
我最接近的是
Array.prototype.remove = function(o) {
var index = this.indexOf(o);
if(index == -1) {
return;
}
return this.splice(index, index);
}
然而,它在第二行引发错误,声称indexOf(o)
不存在。 (cannot find function indexOf()
)
答案 0 :(得分:4)
Array.prototype.indexOf
。所以你需要 shim 这个方法,比如
Array.prototype.indexOf = Array.prototype.indexOf || function( search ) {
for(var i = 0, len = this.length; i < len; i++) {
if( this[ i ] === search ) {
return i;
}
}
return -1;
};
(简化示例)。
此外,您对.splice()
的调用是错误的,第二个参数是您要删除的元素的长度,它应该是1
。
Array.prototype.remove = function(o) {
var index = this.indexOf(o);
if(~index) {
this.splice(index, 1);
}
};
答案 1 :(得分:1)
另一个想法是使用和“关联数组”,也就是具有名称值对的对象文字,并使用适用于所有现代浏览器的删除运算符。
var arr = {'x': somval, 'y': someval2 ...}
delete arr.x;