Я пытаюсь push
объект в массив объектов, но только если конкретный object
не присутствует в массиве. Если он присутствует, объект должен быть обновлен.
Я должен сделать это с es5
Ниже я попробовал
var database = require('../../database');
var autoincrementId = require('../../helpers/autoincrement-id');
var books = database.Books;
function Book(title, author, summary) {
this.title = title;
this.author = author;
this.summary = summary;
}
Book.prototype.createBook = function () {
var id = autoincrementId(id, database.Books); //autoincrement database id
var copies = 1;
var title = this.title.toLowerCase(), author =
this.author.toLowerCase(), summary = this.summary.toLowerCase();
if (!books.length) {
books.push({id: id, title: title, author: author, summary: summary, copies: copies});
} else {
for(var book in books) {
if(books[book].title === title) {
books[book].copies += 1;
break;
}
books.push({id: id, title: title, author: author, summary: summary, copies: copies});
}
}
};
Но когда я запускаю следующее
var abook = new Book('J', 'k', 'l');
var bbook = new Book('M', 'N', 'o');
abook.createBook();
abook.createBook();
bbook.createBook();
bbook.createBook();
console.log(books);
Я получаю следующее
[ { id: 1, title: 'j', author: 'k', summary: 'l', copies: 2 },
{ id: 2, title: 'm', author: 'n', summary: 'o', copies: 2 },
{ id: 3, title: 'm', author: 'n', summary: 'o', copies: 1 } ]
Вместо
[ { id: 1, title: 'j', author: 'k', summary: 'l', copies: 2 },
{ id: 2, title: 'm', author: 'n', summary: 'o', copies: 2 }]
Может кто-нибудь помочь мне разобраться в проблеме с этим кодом. Почему он обновляется и вставляется во второй раз и как я могу решить эту проблему?