2 回答

TA貢獻1869條經驗 獲得超4個贊
我想你正在尋找filter并且some-
const input =
[{books:[{bookId:3},{bookId:2}],id:1,name:"Name 1",description:"desc 1"},{books:[{bookId:5},{bookId:2}],id:2,name:"Name 2",description:"desc 2"},{books:[{bookId:1},{bookId:3}],id:3,name:"Name 3",description:"desc 3"}]
const query =
[3, 1]
const result =
input.filter(({ books = [] }) =>
books.some(({ bookId = null }) => query.includes(bookId))
)
console.log(JSON.stringify(result, null, 2))
輸出 -
[
{
"books": [
{
"bookId": 3
},
{
"bookId": 2
}
],
"id": 1,
"name": "Name 1",
"description": "desc 1"
},
{
"books": [
{
"bookId": 1
},
{
"bookId": 3
}
],
"id": 3,
"name": "Name 3",
"description": "desc 3"
}
]

TA貢獻1798條經驗 獲得超3個贊
const booksList=[
? {books:[{bookId:3},{bookId:2}],id:1,name:"Name 1",description:"desc 1"},
? {books:[{bookId:5},{bookId:2}],id:2,name:"Name 2",description:"desc 2"},
? {books:[{bookId:1},{bookId:3}],id:3,name:"Name 3",description:"desc 3"},
];
const byBookIDs = (...IDs) =>
? booksList.filter(b => b.books.some(b => IDs.includes(b.bookId)));
console.log(byBookIDs(1, 3));
MDN 數組過濾器- 返回一個子集
MDN Array Some?- 盡快匹配(并返回)一些
MDN Array Includes?- 在數組中查找項目
添加回答
舉報