[英]Is it possible to get a list of all items in an array of objects that match items in another array?
[英]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.