我正在尝试过滤具有以下结构的许多对象的列表:
{
"element1":{
"code":"12345",
"location":"Location"
},
"users":[
{
"id":1,
"name":"Name 1",
"surname":"Surname 1",
},
{
"id":2,
"name":"Name 2",
"surname":"Surname 2",
}
]
}
现在我正在按第一个元素进行过滤,如下所示:
filterList(value) {
if (value&& value.trim() != '') {
myList = myList .filter((item) => {
return (item.element1.location.toLowerCase().indexOf(value.toLowerCase()) > -1);
})
}
}
我一直试图通过用户属性(这是对象列表)对其进行过滤,以对其进行过滤,而在姓氏中,我必须更改什么?
答案 0 :(得分:1)
您可以通过替换以下过滤条件来按用户姓氏进行过滤。这将返回其父对象与给定姓匹配的父对象。
return (item.users.some(i => i.surname.toLowerCase().indexOf(value.toLowerCase()) > -1));
如果需要用户列表,则过滤器如下所示。
var usersList = [];
myList.forEach(i => Array.prototype.push.apply(usersList, i.users));
usersList = usersList.filter(i => i.surname.toLowerCase().indexOf(value.toLowerCase()) > -1);