Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型脚本数组对象筛选器_Javascript_Arrays_Multidimensional Array_Filter - Fatal编程技术网

Javascript 类型脚本数组对象筛选器

Javascript 类型脚本数组对象筛选器,javascript,arrays,multidimensional-array,filter,Javascript,Arrays,Multidimensional Array,Filter,我试图在angular 5中过滤一个数组对象,这是我的对象 { “id_记录”:2, “组名”:“PD”, “计数”:15, “用户列表”:[{ “姓名”:“杰弗华”, “nEmail”:jeffhua@abc.com" }, { “姓名”:“乔伊”, “nEmail”:joey@abc.com" }, { “名称”:“angelagosto”, “nEmail”:angelagosto@abc.com" } ] } 这是我的过滤代码 returnitems.filter(它=>{ 返回它.u

我试图在angular 5中过滤一个数组对象,这是我的对象

{
“id_记录”:2,
“组名”:“PD”,
“计数”:15,
“用户列表”:[{
“姓名”:“杰弗华”,
“nEmail”:jeffhua@abc.com"
},
{
“姓名”:“乔伊”,
“nEmail”:joey@abc.com"
},
{
“名称”:“angelagosto”,
“nEmail”:angelagosto@abc.com"
}
]
}
这是我的过滤代码

returnitems.filter(它=>{
返回它.userList.filter(dit=>{
返回dit.name.toLowerCase().includes(filterText)
});
});

可能有什么问题?

在您的筛选器代码中,第二个筛选器返回一个数组:

return it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText)
  });
// returns array
filter方法等待返回一个布尔值。请尝试以下操作:

return items.filter(it => {
  return it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText);
  }).length !== 0;
});
在我的代码片段中,我检查内部过滤器结果(数组)是否为空。如果不是,则向父过滤器返回true,这将在结果数组中保留当前对象


细分(编辑) 下面返回一个布尔值,检查其中一个用户的小写名称是否包含filterText

return dit.name.toLowerCase().includes(filterText);
然后,此块返回一个数组,其中包含在前面解释的条件中返回true的所有值:

return it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText);
})
但是,对于要过滤数组的代码段的父部分,它需要一个布尔值作为返回值:

return items.filter(it => {
  return // expect boolean
});
然后,
.length!==0
在以下内容的末尾:

it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText);
})
使它成为一个布尔值,应该反映您想要的条件

全文(和评论):


在过滤器代码中,第二个过滤器返回一个数组:

return it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText)
  });
// returns array
filter方法等待返回一个布尔值。请尝试以下操作:

return items.filter(it => {
  return it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText);
  }).length !== 0;
});
在我的代码片段中,我检查内部过滤器结果(数组)是否为空。如果不是,则向父过滤器返回true,这将在结果数组中保留当前对象


细分(编辑) 下面返回一个布尔值,检查其中一个用户的小写名称是否包含filterText

return dit.name.toLowerCase().includes(filterText);
然后,此块返回一个数组,其中包含在前面解释的条件中返回true的所有值:

return it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText);
})
但是,对于要过滤数组的代码段的父部分,它需要一个布尔值作为返回值:

return items.filter(it => {
  return // expect boolean
});
然后,
.length!==0
在以下内容的末尾:

it.userList.filter(dit => {
    return dit.name.toLowerCase().includes(filterText);
})
使它成为一个布尔值,应该反映您想要的条件

全文(和评论):


使用
some
而不是内部
filter

  return items.filter(it => {
      return it.userList.some(dit => {
        return dit.name.toLowerCase().includes(filterText)
      });
    });

使用
some
而不是内部
filter

  return items.filter(it => {
      return it.userList.some(dit => {
        return dit.name.toLowerCase().includes(filterText)
      });
    });

什么是
项目
?对象还是数组?您的代码和结构不匹配。如果内部筛选器的条件始终返回false,则它仍将返回一个空数组,而该数组不是false
数组。长度
0
!!0
为False它是一个自定义数组对象,是内部筛选器始终返回true,并且在筛选时现有数组中没有任何更改。什么是
?对象还是数组?您的代码和结构不匹配。如果内部筛选器的条件始终返回false,则它仍将返回一个空数组,而该数组不是false
数组。长度
0
!!0
为False它是一个自定义数组对象,是的内部筛选器始终返回true,并且在筛选时现有数组中没有任何更改。如果我添加“.length!==0”,它会抛出错误,表示“.length无法应用于布尔对象”因此,它证明了它返回的是布尔值,但如何才能获得下一级别的筛选器。根据MDN web文档:filter()方法创建一个新数组:。是否包含了.length!==0在正确的位置?在我的示例中,它是倒数第二个结尾
}
(关闭
返回它.userList.filter(dit=>{…})
感谢您的帮助,但它没有起作用。相反,我在对象中添加了一个标志,并将其设置为html将根据标志值显示。如果我添加“.length!==0”,它会抛出一个错误“.length不能应用于Boolean对象”因此它证明了它返回的是Boolean,但我可以通过什么方式获得下一级的过滤器。根据MDN web文档:filter()方法创建了一个新数组:。是否在正确的位置包含了.length!==0?在我的示例中,它是倒数第二个结尾
(关闭
返回它。userList。filter(dit=>{…})
感谢您的帮助,但它没有起作用。相反,我在对象中添加了一个标志,并将其设置为html将根据标志值显示。