【发布时间】:2021-09-17 03:16:34
【问题描述】:
var books = [
{id: 1, title: "Javascript"},
{id: 2, title: "PHP"},
{id: 3, title: "Dart"},
{id: 4, title: "C++"}
]
var authors = [
{book_id: 1, user: {id: 1, name: "John Doe"}},
{book_id: 3, user: {id: 4, name: "Alex Rio"}},
{book_id: 4, user: {id: 42, name: "Paul Radmond"}}
]
for(var i = 0; i < books.length; i++) {
let bookAuthor = authors.find(author => {
return author.book_id === books[i].id
})
console.log(bookAuthor.user)
// Push user key from authors to current book item by book id
}
循环结果:
{
id:1,
name:"John Doe"
}
error: Uncaught TypeError: Cannot read property 'user' of undefined
在这个循环中,第一次发现用户,但第二次返回错误。
在我的情况下,我如何能够通过 id 正确(高效地)将图书用户推送到 books 数组项?
结果必须是这样的:
var books = [
{id: 1, title: "Javascript", user: {id: 1, name: "John Doe"}},
{id: 2, title: "PHP"},
{id: 3, title: "Dart", user: {id: 4, name: "Alex Rio"}},
{id: 4, title: "C++", user: {id: 42, name: "Paul Radmond"}}
]
【问题讨论】:
-
这里有一个类似的问题和一个很好接受的答案。 stackoverflow.com/q/68258096/14032355
标签: javascript arrays performance loops object