【问题标题】:Compare two array of objects based on a properties value and return the matched根据属性值比较两个对象数组并返回匹配的
【发布时间】:2021-02-04 00:38:36
【问题描述】:

嗨,我有两个对象数组,我的目标是比较它们并过滤掉匹配的结果 我的数据是这样的

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的business与data2的businessProcess.label匹配,我想比较data1和data2并返回data2的匹配。

谁能告诉我该怎么做?

【问题讨论】:

标签: javascript arrays


【解决方案1】:

您可以使用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);
  });

}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多