簡體   English   中英

用字典數組過濾字典數組

[英]Filter array of dictionaries with array of dictionaries

我有兩個字典數組,都包含一個 ID 屬性,一個是“id”,另一個是“_id”。

我正在嘗試過濾一個包含所有可用書籍的數組,並根據用戶擁有的書籍從中獲取數據。

const books = allbooks.filter(({ id }) =>
   userBooks.findIndex((book) => book._id === id)
)

這是我現在正在使用的代碼,但它沒有按照我的預期運行。

數據是什么樣的

allbooks [
{ 
  id: 1,
  name: 'Book 1'
},
{ 
  id: 2,
  name: 'Book 2'
}
]

userBooks [
 { 
   _id: 1
}
]

我應該從第二個數組的 _ids 創建一個數組並用它過濾嗎? 試圖找到這樣做的最佳實踐方法,我經常使用字典數組,有時發現這很困難。

你太親密了我的朋友。 問題是Array.prototype.findIndex正在返回 lambda 函數返回 true 的第一個索引。 匹配書籍的索引是索引 0,這是falsy ,這使您的過濾器忽略它,因為過濾器 lambda 函數的結果為假。

相反,您可以檢查 findIndex 的結果是否 > -1,因為如果未找到元素, Array.prototype.findIndex返回 -1。

 const allbooks = [ { id: 1, name: 'Book 1' }, { id: 2, name: 'Book 2' } ]; const userBooks = [ { _id: 1 } ]; const books = allbooks.filter(({ id }) => userBooks.findIndex((book) => book._id === id) > -1 ) console.log(books);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM