我有一系列这样的对象.
var books = [{
id : 1,
name : 'Name of the wind',
year : 2015,
rating : 4.5,
author : 2}];
现在,我有一个功能editBooks,它要求用户提供一个ID,并用用户指定的值替换具有相同ID的书.
例如
function editBooks(name,author,year,rating,id)
如何根据用户提供的ID替换我的books数组中对象的内容?
解决方法:
您可以搜索id并将其用于更新.如果找不到书,则生成一个新条目.
function editBooks(name, author, year, rating, id) {
var book = books.find(b => b.id === id);
if (book) {
book.name = name;
book.author = author,
book.year = year;
book.rating = rating;
} else {
books.push({ id, name, author, year, rating });
}
}
var books = [{ id: 1, name: 'Name of the wind', year: 2015, rating: 4.5, author: 2 }];
editBooks('Foo', 2017, 3.3, 5, 1);
editBooks('bar', 2016, 1, 2, 2);
console.log(books);
为了获得更好的实现,我将id移到参数的第一位,并检查所有参数以仅更新未定义的参数,因为可能仅更新一个属性.