返回一组文档,其中所有子数组都包含环回或nodejs中的给定值

Return a set of documents with all sub-arrays containing a given value in loopback or nodejs

本文关键字:包含环 数组 nodejs 一组 文档 返回      更新时间:2023-09-26

如何返回一组具有匹配公共值的子数组的文档。为了更好地解释,请考虑以下数据:

[
{
    Category: 1,
    Products: [
                {
                    Name: 'ABC',
                    ColorCode:[1,2,3,4,5]
                },
                {
                    Name: 'DEF',
                    ColorCode:[1,2,3,4,5,6]
                },
                {
                    Name: 'GHI',
                    ColorCode:[1,2,3,4,6,7]
                }                   
            ]
},
{
    Category: 2,
    Products: [
                {
                    Name: 'JKL',
                    ColorCode:[4,6,7,]
                },
                {
                    Name: 'MNO',
                    ColorCode:[4,5,6,9,]
                }                   
            ]
},
{
    Category: 3,
    Products: [
                {
                    Name: 'OPQ',
                    ColorCode:[3,4,5,6,9,10]
                },
                {
                    Name: 'RST',
                    ColorCode:[2,3,5,6,9,10]
                }                   
            ]
}]

任务是,获取包含特定颜色代码的所有产品的所有类别:

例如,对于ColorCode=6,结果应该是:

[
{
    Category: 2,
    Products: [
                {
                    Name: 'JKL',
                    ColorCode:[4,6,7,]
                },
                {
                    Name: 'MNO',
                    ColorCode:[5,6,9,]
                }                   
            ]
},
{
    Category: 3,
    Products: [
                {
                    Name: 'OPQ',
                    ColorCode:[3,4,5,6,9,10]
                },
                {
                    Name: 'RST',
                    ColorCode:[2,3,5,6,9,10]
                }                   
            ]
}]

对于ColorCode=4,结果应该是:

[
{
    Category: 1,
    Products: [
                {
                    Name: 'ABC',
                    ColorCode:[1,2,3,4,5]
                },
                {
                    Name: 'DEF',
                    ColorCode:[1,2,3,4,5,6]
                },
                {
                    Name: 'GHI',
                    ColorCode:[1,2,3,4,6,7]
                }                   
            ]
},
{
    Category: 2,
    Products: [
                {
                    Name: 'JKL',
                    ColorCode:[4,6,7,]
                },
                {
                    Name: 'MNO',
                    ColorCode:[4,5,6,9,]
                }                   
            ]
}]

对于ColorCode=7,结果应为空数组:[]

提前谢谢。

您正在寻找Array.prototype.filter

// filter out categories that don't contain color code 4
categories.filter(function(category) {
  return category.products.filter(containsColor(4)) > 0;
});
function containsColor(colorCode) {
  return function(product) {
    return product.ColorCode.indexOf(colorCode) >= 0;
  };
}