Vue.js 如何处理VueJS筛选器中的空值?

Vue.js 如何处理VueJS筛选器中的空值?,vue.js,Vue.js,以下过滤器工作正常 filteredItems() { return this.items.filter(item => item.name.toLowerCase().indexOf(this.search.toLowerCase()) > -1) } 然而,当我尝试筛选第二列时,我有两个问题 return this.items.filter(item => item.name.toLowerCase()

以下过滤器工作正常

    filteredItems() {
        return this.items.filter(item => 
                item.name.toLowerCase().indexOf(this.search.toLowerCase()) > -1)

    }
然而,当我尝试筛选第二列时,我有两个问题

return this.items.filter(item => 
item.name.toLowerCase().indexOf(this.search.toLowerCase()) > -1)
.filter(item => 
item.location.toLowerCase().indexOf(this.search.toLowerCase()) > -1)
第一个问题,有时位置是空的,所以页面不会加载。为了测试,我将数据库中的空值更新为空值,并且页面没有错误

其次,我不能按位置搜索(即使null设置为空白)

*****编辑****
似乎它需要两个过滤器都是真的。。。因此,我将检查文档…

首先,您可以检查无效值,如
null、undefined、“
并通过
名称或
位置进行安全搜索。以下是一个例子:

函数filteredItems(){
将此邮件退回
.filter(项目=>{
return(item.name&&item.name.toLowerCase().indexOf(this.search.toLowerCase())>-1)|
(item.location&&item.location.toLowerCase().indexOf(this.search.toLowerCase())>-1)
}) 
}

首先,您可以检查无效值,如
空值、未定义“
,然后通过
名称或
位置进行安全搜索。以下是一个例子:

函数filteredItems(){
将此邮件退回
.filter(项目=>{
return(item.name&&item.name.toLowerCase().indexOf(this.search.toLowerCase())>-1)|
(item.location&&item.location.toLowerCase().indexOf(this.search.toLowerCase())>-1)
}) 
}

您可以使用
|
操作符添加use
name
location
过滤器,如:

filteredItems() {
  var search = this.search.toLowerCase();
  return this.items.filter(({name = '', location = ''}) => {
    return name.toLowerCase().indexOf(search) > -1 || name.toLowerCase().indexOf(search) > -1;
  })
}

要解决
null
问题,您可以将空字符串设置为
name
location
的默认值,如
({name='',location='})

您可以使用
|
操作符添加使用
name
location
过滤器,如:

filteredItems() {
  var search = this.search.toLowerCase();
  return this.items.filter(({name = '', location = ''}) => {
    return name.toLowerCase().indexOf(search) > -1 || name.toLowerCase().indexOf(search) > -1;
  })
}
要解决
null
问题,可以将空字符串设置为
name
location
的默认值,如
({name='',location=''})