[英]Filtering array based on another array
我正在嘗試過濾 arr1,關於 arr2 我想要實現的是,獲取 arr1 的所有對象,其中它在 arr2 中對應的“流派”屬性為“真”
const arr1=[
{
"id":1,"genre":["horror","drama","mystery"]
},
{
"id":2,"genre":["romance"]
},
{
"id":3,"genre":["adventure","drama"]
},
]
const arr2=[
{
"genre":"horror",
"checked":false
},
{
"genre":"drama",
"checked":true
},
{
"genre":"mystery",
"checked":false
},
{
"genre":"romance",
"checked":false
},
{
"genre":"adventure",
"checked":true
}
]
所以所需的輸出將是:
[
{
"id":1,"genre":["horror","drama","mystery"]
},
{
"id":3,"genre":["adventure","drama"]
},
]
我已經嘗試了一些配置 javascript 過濾器方法,但我只是想不出像描述的那樣工作的東西。 任何幫助,將不勝感激。 謝謝你。
這應該工作。
在第一個數組上使用.filter
並在另一個數組上使用.some
來確定它是否被checked
並且第一個數組的元素包含使用.indexOf
或更好.includes
的目標genre
const arr1=[ { "id":1,"genre":["horror","drama","mystery"] }, { "id":2,"genre":["romance"] }, { "id":3,"genre":["adventure","drama"] }, ] const arr2=[ { "genre":"horror", "checked":false }, { "genre":"drama", "checked":true }, { "genre":"mystery", "checked":false }, { "genre":"romance", "checked":false }, { "genre":"adventure", "checked":true } ] const result = arr1.filter(a1 => arr2.some(a2 => a2.checked && a1.genre.includes(a2.genre))) console.log(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.