Array.prototype.remove = function (obj) {
for(var i = 0; i < this.length; i++) {
if(this[i] === obj) {
if (i == this.length) {
this[i] = null;
} else {
for(var j = i; j < this.length-1; j++) {
this[j] = this[j+1];
}
delete this[j]; // updated from this[j] = null; still not working.
}
}
}
return this;
};
调用它:
write("ARRAY TEST = " + [22, 33, 44].remove(33).remove(22));
..它打印:
44,,
为什么这 2 个逗号以及如何修复我的删除功能以删除逗号?
最佳答案
delete
Array
不会删除元素,它会将其设置为 undefined
。由于 undefined
打印结果为空字符串,这解释了 write()
的结果。
您需要使用 splice()
删除元素。如果将它与 indexOf
结合使用(你可能需要为旧浏览器定义它)你得到一个非常短的函数:
Array.prototype.remove = function (obj) {
this.splice(this.indexOf(obj), 1);
return this;
}
PS:我不提倡扩展原生原型(prototype)......
关于javascript - 我的删除功能有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4878893/