簡體   English   中英

根據屬性值比較兩個對象數組並返回匹配的

[英]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.filterArray.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.

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