gpt4 book ai didi

javascript - 在不循环所有数组的情况下删除数组的对象

转载 作者:行者123 更新时间:2023-11-30 07:41:17 26 4
gpt4 key购买 nike

我希望能够从数组中删除一个对象,而无需循环所有对象数组来查看当前数组元素是否具有我要删除的项目的 ID。

JavaScript:

function CBooks() {
this.BooksArray = [];

this.AddBook = function(divID, sContents) {
this.BooksArray.push(new CBook());
pos = this.BooksArray.length - 1;
this.BooksArray[pos].ArrayID = pos;
this.BooksArray[pos].DivID = divID;
this.BooksArray[pos].Contents = sContents;
}

this.DelBook = function(divID) {
this.BooksArray.splice(...);
}
}

function CBook() {
this.ArrayID = 0;
this.DivID = "";
this.Contents = "";
}

我这样初始化对象:

var oBooks = new CBooks();

我像这样添加一本新书:

oBooks.AddBook("divBook1", "blahblahblah");
//Creation of the div here
oBooks.AddBook("divBook2", "blehblehbleh");
//Creation of the div here

现在用户可以单击显示每本书的 div 中的 X 按钮,以便删除该书。所以 X 按钮包含:

onclick=oBooks.DelBook(this.id);

现在很明显,在 DelBook(divID) 函数中,我可以遍历 BooksArray 的长度,并查看每个元素的 divID 是否等于参数并拼接在那一点,但我想避免循环。

有什么办法吗?

提前致谢

最佳答案

这样的事情是可行的,但前提是您愿意放弃用于哈希的数组。

您的代码已编辑

function CBooks() {
this.BooksHash = {};

this.AddBook = function(divID, sContents) {
var book = new CBook();
//book.ArrayID = pos; //you don't actually need this anymore using a hash
book.DivID = divID;
book.Contents = sContents;
this.BooksHash[book.DivID] = book;
}

this.DelBook = function(divID) {
delete this.BooksHash[divID];
}
}

function CBook() {
//this.ArrayID = 0; // same here
this.DivID = "";
this.Contents = "";
}

希望对你有帮助

关于javascript - 在不循环所有数组的情况下删除数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679480/

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