我有一个常量packages
,其中包含object_tags
的数组
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');
但是我遇到一个错误:
未捕获的TypeError:无法读取未定义的属性'tag'
所以我尝试做嵌套的.filter()
this.taggedOrders = packages.filter(item => item.object_tags.filter(x => x.tag.name === 'Lost'));
但是现在它只返回整个数组,没有过滤任何内容。
我想念什么?
答案 0 :(得分:1)
我明白了。我使用了.some()
this.taggedOrders = packages.filter(item => item.object_tags.some(x => x.tag.name === 'Lost'));
答案 1 :(得分:-1)
您几乎就在那儿,使用嵌套过滤器,您还需要先达到第一个过滤条件。在这种情况下,您可以使用长度> 0的条件。例如:
this.taggedOrders = packages.filter(p => p.object_tags.filter(t => t.tag.name === 'Lost').length > 0);