提问者:小点点

如果一个属性也是角度为7的数组,则比较两个对象数组?


我有两个数组:First-Jobs对象数组,它包含数组ItemId,如下所示:

jobs: [{
        name: null
        id: 612
        items: []
        stat: 1
        itemIds: [223, 1234]
    },
    {
        name: null
        id: 734
        items: []
        stat: 2
        itemIds: [564]
    }
    .
    .
    .
]

和第二个数组项,如下所示:

items: [{
        act: true
        id: 1234
        name: "Item1"
    },
    {
        act: true
        id: 222
        name: "Item2"
    },
]

如何从jobs数组中筛选出id不等于任何ItemId的项目数组? 我尝试了三个循环,但它在一个作业数组中只删除了一个具有相同id的项。 感谢任何帮助。


共1个答案

匿名用户

我们将使用array.filteritems中的每个元素进行循环,并创建一个新的数组,其中只包含要保留的项。

对于每个值,我们将查看是否有作业在itemids中包含代码id。 为此,我们将遍历每个作业,对于每个作业,我们将查看底层的itemsids值。

array.some这里将立即离开,在它找到一些东西。

null

const jobs = [{
    name: null,
    id: 612,
    items: [],
    stat: 1,
    itemIds: [223, 1234],
  },
  {
    name: null,
    id: 734,
    items: [],
    stat: 2,
    itemIds: [564],
  }
];

const items = [{
    act: true,
    id: 1234,
    name: 'Item1',
  },
  {
    act: true,
    id: 222,
    name: 'Item2',
  },
];

const filteredItems = items.filter(x => jobs.some(y => y.itemIds.includes(x.id)));

console.log(filteredItems);