带有嵌套对象Angular 5的过滤器数组

时间:2018-06-24 14:33:44

标签: javascript angular5

我正在尝试过滤具有以下结构的许多对象的列表:

{  
"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);
        })
    }
}

我一直试图通过用户属性(这是对象列表)对其进行过滤,以对其进行过滤,而在姓氏中,我必须更改什么?

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);