[英]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.