繁体   English   中英

对象数组的嵌套过滤

[英]Nested filtering of array of objects

我有这个包含object_tags数组的常量packages

const packages = [{
   "id":"11",
   "object_tags":[
      {
         "id":"400",
         "tag":{
            "id":"30",
            "name":"Sample Tag"
         },
      }
   ],
},
{
   "id":"12",
   "object_tags":[
      {
         "id":"401",
         "tag":{
            "id":"31",
            "name":"Lost"
         },
      }
   ],
}]

我想过滤只有名称为Lost的标签的包。 所以我尝试.filter()

this.taggedOrders = packages.filter(item => item.object_tags[0].tag.name === 'Lost');

但我收到一个错误:

未捕获的类型错误:无法读取未定义的属性“标签”

所以我尝试做嵌套.filter()

this.taggedOrders = packages.filter(item => item.object_tags.filter(x => x.tag.name === 'Lost'));

但现在它只返回整个数组,没有过滤。

我错过了什么?

我知道了。 我用过.some()

this.taggedOrders = packages.filter(item => item.object_tags.some(x => x.tag.name === 'Lost'));

您快到了,使用嵌套过滤器,您还需要达到第一个过滤条件。在这种情况下,您可以使用长度 > 0 的条件。例如:

this.taggedOrders = packages.filter(p => p.object_tags.filter(t => t.tag.name === 'Lost').length > 0);

暂无
暂无

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

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