繁体   English   中英

获取与其他数组匹配的所有项目

[英]get all items that have match with other array

我正在创建一个查询,但是当我不知道该怎么做时,我来到了一个部分。 我有一个数组,例如两个项目

//filter array
const filterArray=r.expr(['parking', 'pool'])

而且我还有一张包含以下记录的表格:

[
    {
        "properties": {
            "facilities": [
                "parking"
            ],
            "name": "Suba"
        }
    },
    {
        "properties": {
            "facilities": [
                "parking",
                "pool",
                "pet friendly"
            ],
            "name": "Kennedy",
        }
    },
    {
        "properties": {
            "facilities": [
                "parking",
                "pool"
            ],
            "name": "Soacha"
        }
    },
    {
        "properties": {
            "facilities": [
                "parking",
                "pet friendly",
                "GYM"
            ],
            "name": "Sta Librada"
        }
    },
]

我需要使用数组过滤记录,但我需要该记录具有数组过滤器的所有项目。 如果记录有更多的数组过滤器项不是问题,我需要是否包含数组过滤器的所有项来获取该记录。 在这种情况下,我需要所有具有“游泳池”和“停车场”设施的记录

当前查询

当前查询,但它还返回包含过滤器数组的一项或两项的记录

r.db('aucroom').table('hosts')
.filter(host=>
    host('properties')('facilities').contains(val=>{
        return filterArray.contains(val2=>val2.eq(val))

    })
)
.orderBy('properties')
.pluck(['properties'])

我希望等待的结果

像图像示例:

在此处输入图像描述

如果你想要两个 arrays 的严格匹配(相同数量的元素,相同的顺序),然后使用.eq()

array1.eq(array2)

如果您希望第一个数组包含第二个数组的所有元素,则使用.setIntersection() ,只需注意 array2 应该包含不同的元素(一组):

array1.setIntersection(array2).eq(array2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM