首页 > 解决方案 > 将项目过滤到数组内的数组中?

问题描述

const personData = {
  personList: [
    {

      personCodes: [
        {
          code: "001",
          desc: "Indian"
        }
      ]
    },
    
    {
     personCodes: [
        {
          code: "002",
          desc: "Spanish"
        }
      ]
    },
    {
      personCodes: [
        {
          code: "001",
          desc: "Spanish"
        },
        {
          code: "002",
          desc: "Spanish1"
        },
        {
          code: "003",
          desc: "Spanish2"
        }
      ]
    },
    
    {
      personCodes: [
        {
          code: "001",
          desc: "Russian"
        }
      ]
    },
    {
      personCodes: [
        {
          code: "001",
          desc: "Spanish"
        },
        {
          code: "002",
          desc: "Indian"
        },
        {
          code: "004",
          desc: "Japanina"
        }
      ]
    },
    {
      personCodes: [
        {
          code: "001",
          desc: "Spanish"
        },
        {
          code: "004",
          desc: "Indian"
        },
        {
          code: "003",
          desc: "Japanina"
        }
      ]
    },
    
  ]
};

const personID = ["001","003"];

const result = personData.personList.filter(role => role.personCodes && role.personCodes.find(group => personID.includes(group.code)));

console.log(result);

以下代码用人员列表表示人员数据。每个人列表代表代码。执行代码后,我将获得 5 种不同类型的数组,其中包含代码到 personID 数组中。我希望从 person Data 3rd 和 6th 对象中得到预期的结果。有人可以查看它并修改代码,我已经附上了所需的代码。谢谢

标签: javascriptarraysecmascript-6

解决方案


你可以在上面使用every()personID然后find()在里面使用。

const personData = { personList: [ { personCodes: [ { code: "001", desc: "Indian" } ] }, { personCodes: [ { code: "002", desc: "Spanish" } ] }, { personCodes: [ { code: "001", desc: "Spanish" }, { code: "002", desc: "Spanish1" }, { code: "003", desc: "Spanish2" } ] }, { personCodes: [ { code: "001", desc: "Russian" } ] }, { personCodes: [ { code: "001", desc: "Spanish" }, { code: "002", desc: "Indian" }, { code: "004", desc: "Japanina" } ] }, { personCodes: [ { code: "001", desc: "Spanish" }, { code: "004", desc: "Indian" }, { code: "003", desc: "Japanina" } ] }, ] };

const personID = ["001","003"];

const result = personData.personList.filter(role => 
                 role.personCodes && personID.every(x => 
                    role.personCodes.find(a => x.includes(a.code))
               ));

console.log(result);


推荐阅读