Angular 如何使用ionic3筛选数组中的嵌套数据

Angular 如何使用ionic3筛选数组中的嵌套数据,angular,ionic-framework,ionic2,ionic3,Angular,Ionic Framework,Ionic2,Ionic3,我试图根据用户名筛选数组并显示它,但当我尝试筛选时,它不显示任何数据。 用户结构是这样的 buyer: [{ address: "" contactNo: "" email: "test@gmail.com" name: "user"}] cutomerContact: "3058989778" orderDate: "2019-07-31T12:10:11.

我试图根据用户名筛选数组并显示它,但当我尝试筛选时,它不显示任何数据。 用户结构是这样的

     buyer: [{
              address: ""
              contactNo: ""
              email: "test@gmail.com"
              name: "user"}]
    cutomerContact: "3058989778"
    orderDate: "2019-07-31T12:10:11.818Z"
    orderType: "general"
我过滤数组的代码是

this.userOrders = this.filteredOrders.filter(x => x.buyer = x.buyer.name == this.userName)
我不知道如何过滤嵌套数据。如果您有任何帮助,我将不胜感激

演示

让testArray=[
{
“姓名”:“所以”,
“买方”:[
{
“地址”:“地址”,
“联系人编号”:“,
“电子邮件”:test@gmail.com",
“名称”:“用户”
}
],
“客户联系人”:“3058989778”,
“订单日期”:“2019-07-31T12:10:11.818Z”,
“订单类型”:“常规”
}
];
让filteredArray=testArray.filter((element)=>element.buyer.some((subElement)=>subElement.name==user));
控制台日志(filteredArray)请尝试以下操作

演示

让testArray=[
{
“姓名”:“所以”,
“买方”:[
{
“地址”:“地址”,
“联系人编号”:“,
“电子邮件”:test@gmail.com",
“名称”:“用户”
}
],
“客户联系人”:“3058989778”,
“订单日期”:“2019-07-31T12:10:11.818Z”,
“订单类型”:“常规”
}
];
让filteredArray=testArray.filter((element)=>element.buyer.some((subElement)=>subElement.name==user));

控制台日志(filteredArray)
用户
筛选
以筛选主数组,并
某些功能
以检查条件

some()方法对数组中的每个元素执行一次函数:

  • 如果它找到一个数组元素,其中函数返回一个真值, some()返回true(不检查其余值)
  • 否则返回false
name='user';
过滤器数据=[
{
“买方”:[
{
“地址”:“地址”,
“联系人编号”:“,
“电子邮件”:user@gmail.com",
“名称”:“用户”
}
],
“客户联系人”:“3058989778”,
“订单日期”:“2019-07-31T12:10:11.818Z”,
“订单类型”:“常规”
},
{
“买方”:[
{
“地址”:“地址”,
“联系人编号”:“,
“电子邮件”:test@gmail.com",
“名称”:“测试”
}
],
“客户联系人”:“3058989778”,
“订单日期”:“2019-07-31T12:10:11.818Z”,
“订单类型”:“常规”
}
]
让结果=this.filterData.filter((x)=>{
返回x.buyer.some(y=>y.name==name)
})

console.log(result)
用户
过滤器
过滤主数组和
某些功能检查条件

some()方法对数组中的每个元素执行一次函数:

  • 如果它找到一个数组元素,其中函数返回一个真值, some()返回true(不检查其余值)
  • 否则返回false
name='user';
过滤器数据=[
{
“买方”:[
{
“地址”:“地址”,
“联系人编号”:“,
“电子邮件”:user@gmail.com",
“名称”:“用户”
}
],
“客户联系人”:“3058989778”,
“订单日期”:“2019-07-31T12:10:11.818Z”,
“订单类型”:“常规”
},
{
“买方”:[
{
“地址”:“地址”,
“联系人编号”:“,
“电子邮件”:test@gmail.com",
“名称”:“测试”
}
],
“客户联系人”:“3058989778”,
“订单日期”:“2019-07-31T12:10:11.818Z”,
“订单类型”:“常规”
}
]
让结果=this.filterData.filter((x)=>{
返回x.buyer.some(y=>y.name==name)
})

console.log(结果)
此.filteredOrders.filter(x=>x.buyer=x.buyer.name==this.userName)
替换为
此.filteredOrders.filter(x=>x.buyer.name==this.userName)
@Kinjal我已经试过了,它只提供了一个空数组。如果buyer中始终只有一个对象,那么您可以尝试
this.filteredOrders.filter(x=>x.buyer[0].name==this.userName)
否则您必须在filteredreplace
this.filteredOrders.filter中遍历buyer(x=>x.buyer=x.buyer.name==this.userName)
使用
this.filteredOrders.filter(x=>x.buyer.name==this.userName)
@Kinjal我已经尝试过这个方法,它只提供了一个空数组如果buyer中始终只有一个对象,那么您可以尝试
this.filteredOrders.filter(x=>x.buyer[0]=this.userName)
否则您必须在过滤器内部循环