Я хочу, чтобы иметь возможность удалять объект из массива без цикла всего массива объектов, чтобы увидеть, имеет ли текущий элемент массива идентификатор элемента, который я хочу удалить ,удалять объект массива без петлирования всего массива
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
Теперь пользователь может нажать кнопку X в div, отображающем каждую книгу, чтобы он мог удалить книгу. Таким образом, кнопка X содержит:
onclick=oBooks.DelBook(this.id);
Теперь, очевидно, в DelBook (DIVID) функцию я мог цикл по длине BooksArray и видеть каждый элемент, если это DIVID равно параметру и сращивания на этот момент, но я хочу избежать цикла.
Есть ли способ сделать это?
заранее спасибо
Почему вы хотите чтобы избежать цикла, есть ли острая проблема с производительностью? Если нет: просто сделайте цикл. Если да: используйте какую-то систему хеш-ковша? Что у тебя было на уме? – Halcyon
Я хочу избежать цикла, потому что я думал, что может быть какой-то более быстрый метод, чтобы просто получить доступ к этому элементу напрямую с помощью ассоциативных массивов javascript. – MIrrorMirror
Если вы не хотите, чтобы цикл, вам нужно использовать словарь или аналогичную хэш-структуру данных. – levi