编程语言
首页 > 编程语言> > 根据javascript中对象数组中的id替换特定对象

根据javascript中对象数组中的id替换特定对象

作者:互联网

我有一系列这样的对象.

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移到参数的第一位,并检查所有参数以仅更新未定义的参数,因为可能仅更新一个属性.

标签:loops,javascript-objects,arrays,javascript
来源: https://codeday.me/bug/20191026/1932753.html