簡體   English   中英

如何過濾 Object 的數組並檢查特定鍵是否在數組中具有值

[英]How to Filter an Array of Object and check if Specific key has a value in an Array

我有這個對象數組:

const Books = [
  {title:'Book 1', Date: '12/12/2000'},
  {title:'Book 2', Date: '12/12/2001'},
  {title:'Book 3', Date: '12/12/2003'},
  {title:'Book 4', Date: '12/12/2003'}
]

我有這一系列選定的書籍:

 const selectedBooks = ['Book1','Book4']

是否有可能獲得以下結果:

 const filteredBooks = [
     {title:'Book 1', Date: '12/12/2000'},
     {title:'Book 4', Date: '12/12/2003'}
 ]

lodash 或 ES6 中是否有實現它的方法?

您可以將Array.prototype.filterArray.prototype.includes一起使用:

 const Books = [ { title: 'Book 1', Date: '12/12/2000' }, { title: 'Book 2', Date: '12/12/2001' }, { title: 'Book 3', Date: '12/12/2003' }, { title: 'Book 4', Date: '12/12/2003' } ] const selectedBooks = ['Book 1', 'Book 4'] const filteredBooks = Books.filter(book => selectedBooks.includes(book.title)); console.log(filteredBooks);

您可以filter selectedBooks includestitle的所有元素:

const filteredBooks = Books.filter(book => selectedBooks.includes(book.title))

filter返回給定回調返回真實值的所有條目, includes將告訴您數組是否包含給定值。

是的,試試數組過濾運算符

const filteredBooks = Books.filter(({title}) => selectedBooks.includes(title))

我假設selectedBooks中的項目將與filteredBooks中的title匹配。 如果沒有,您將需要一些方法來 map 這些值。

您需要Array.prototype.filterArray.prototype.indexOf的組合。

const filteredBooks = Books.filter(book => selectedBooks.indexOf(book.title) !== -1)

 const books = [ { title: 'Book 1', Date: '12/12/2000' }, { title: 'Book 2', Date: '12/12/2001' }, { title: 'Book 3', Date: '12/12/2003' }, { title: 'Book 4', Date: '12/12/2003' } ]; const selectedBooks = ['Book 1', 'Book 4']; const filteredBooks = _.filter(books, book => _.includes(selectedBooks, book.title)); console.log(filteredBooks);
 <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>

暫無
暫無

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

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