【发布时间】:2020-02-23 01:44:00
【问题描述】:
我有两个数组如下:
array1 = [
{id:1, children: ['a', 'b']},
{id:2, children: ['a', 'b']},
{id:3, children: ['b', 'c']},
{id:4, children: ['c', 'a']},
{id:5, children: ['a', 'b', 'c']}];
array2 = ['a', 'b'];
现在我想在 JS/TS 中编写一个代码,它将从 array1 中找到确切的对象,其中数组 2 中的子数组的每个元素都与数组 1 中的子数组的每个元素完全匹配(顺序无关紧要)。
我试图用三个过滤器来解决这个问题,附加条件是数组 1 和数组 2 之间的子数组长度匹配。但是,如果这些子数组中至少有一个元素与所需的数组长度相匹配,这也会出现。
如果有人给我解决方案,我将不胜感激。
array1
.filter(a => a.children
.filter(b => array2
.filter(c => b === c)).length === array2.length);
编辑:
我实际上在上面的例子中稍微简化了这个问题。在我的实际项目中,这两个数组如下:
const productOrders: ProductOrder[] =
[
{
productId: 1, subProductOrders:
[{subProduct: {subProductId: 1}}, {subProduct:
{subProductId: 2}}]
},
{
productId: 1, subProductOrders:
[{subProduct: {subProductId: 2}}, {subProduct:
{subProductId: 1}}]
},
{
productId: 1, subProductOrders:
[{subProduct: {subProductId: 2}}, {subProduct:
{subProductId: 3}}]
},
{
productId: 1, subProductOrders:
[{subProduct: {subProductId: 1}}, {subProduct:
{subProductId: 2}}, {subProduct: {subProductId: 3}}]
},
];
const matchingCriteria: SubProductOrder[] =
[
[{subProduct: {subProductId: 1}}, {subProduct: {subProductId:
2}}]
];
现在我想从 productOrders 数组中查找产品,其中 subProductOrders 数组的 subProductId 与 matchingCriteria 数组的 subProductId 匹配(顺序无关紧要)。在上面的例子中,productOrders 数组的前两个产品应该匹配,尽管 subProductsIds 是无序的
【问题讨论】:
-
查看这个问题以获得详细答案 - stackoverflow.com/questions/7837456/…
标签: javascript arrays typescript