gpt4 book ai didi

javascript - 我的删除功能有什么问题?

转载 作者:行者123 更新时间:2023-11-30 10:51:48 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com