gpt4 book ai didi

Javascript foreach 不适用于所有对象

转载 作者:行者123 更新时间:2023-12-01 02:23:58 25 4
gpt4 key购买 nike

我目前有一个对象,每当创建新对象时,它就会将自身添加到数组中。最终,我想删除数组中的所有引用,以便我可以添加新的引用。

我创建了一个对象方法 (this.removeFromArray()),它在数组中查找自身并将其自身拼接出来。 removeAll() 运行一个 for 循环,使数组中的每个对象都运行removeFromArray(),所以我希望当我尝试读出数组中的项目时,我应该什么也得不到。

相反,根据创建的对象数量,我会留下一两个对象。我该如何解决这个问题并清除数组中的所有对象?

var objArray = [];

function obj(name) {
objArray.push(this);
console.log("Created "+name);

this.name = name;
this.removeFromArray = function() {
objArray.splice(
objArray.findIndex(function(e) {
return e == this;
}),
1
);
}
}

function removeAll() {
for (var i = 0; i <= objArray.length - 1; i++) {
objArray[i].removeFromArray();
}
}

var foo = new obj("foo");
var bar = new obj("bar");
var cat = new obj("cat");
var dog = new obj("dog");
var bird = new obj("bird");

removeAll();

for (var i = 0; i <= objArray.length-1; i++) { //Check the values in the array for leftovers
console.log(objArray[i].name);
}

//Expected nothing in the console but the creation messages, got foo and bar instead

最佳答案

如果您想简单地删除所有创建的对象,请编辑 removeAll() 函数,如下所示:

请注意,您必须为 objArray.length 创建一个变量,而不是直接将 objArray.length 放入 for() 循环中。

function removeAll() {
var len = objArray.length;
for (var i = 0; i <= len - 1; i++) {
objArray.splice(0,1);
}
}

关于Javascript foreach 不适用于所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48964665/

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