[英]Compare two array of objects based on a properties value and return the matched
嗨我有兩個對象數組我的目標是比較它們並過濾掉匹配的結果我的數據看起來像這樣
let data1 = [
{
name:'tom',
process:'flipkart',
master:'pharma',
profiles: [
{
level:'begginer',
language:'hindi',
role:['flp_admin','flp_teacher']
}
]
},
{
name:'jeo',
process:'amazon',
master:'science',
profiles: [
{
level:'begginer',
language:'english',
role:['amz_admin']
}
]
},
{
name:'jerry',
process:'email',
master:'it',
profiles: [
{
level:'begginer',
language:'urdu',
role:['eml_teacher']
}
]
}
]
let data2 = [
{
masterName:'Pharma',
businessProcess: [
{ label:'flipkart', value:'flipkart' },
{ label:'amazon', value:'amazon' }
]
},
{
masterName:'science',
businessProcess: [
{ label:'flipkart', value:'flipkart' },
{ label:'amazon', value:'amazon' }
]
},
{
masterName:'it',
businessProcess: [
{ label:'email', value:'email' },
{ label:'amazon', value:'amazon' }
]
}
如果 data1 的 master 與 data2 的 masterName 匹配,並且 data1 的業務與 data2 的 businessProcess.label 匹配,我想將 data1 與 data2 進行比較並從 data2 返回匹配項。
誰能告訴我我該怎么做?
您可以使用Array.filter
和Array.find
來循環查找匹配項:
let data1 = [{ name: 'tom', process: 'flipkart', master: 'pharma', profiles: [{ level: 'begginer', language: 'hindi', role: ['flp_admin', 'flp_teacher'] }] }, { name: 'jeo', process: 'amazon', master: 'science', profiles: [{ level: 'begginer', language: 'english', role: ['amz_admin'] }] }, { name: 'jerry', process: 'email', master: 'it', profiles: [{ level: 'begginer', language: 'urdu', role: ['eml_teacher'] }] } ] let data2 = [{ masterName: 'Pharma', businessProcess: [{ label: 'flipkart', value: 'flipkart' }, { label: 'amazon', value: 'amazon' } ] }, { masterName: 'science', businessProcess: [{ label: 'flipkart', value: 'flipkart' }, { label: 'amazon', value: 'amazon' } ] }, { masterName: 'it', businessProcess: [{ label: 'email', value: 'email' }, { label: 'amazon', value: 'amazon' } ] } ]; console.log(data1.filter((d) => { return data2.find((d2) => { //check if data matername equals data1 master // or if data1.process value exists in one of the item of businessProcess as value return d2.masterName == d.master || d2.businessProcess.find(b => b.value === d.process); }); }));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.