【发布时间】:2017-10-02 00:41:58
【问题描述】:
我正在尝试使用 vue.js 中的计算属性过滤数组。我想搜索多个字段、名称、状态、标签等。
我的数据:
events: [
{
id: 1,
name: 'Name of event',
url: '#',
datetime: '2017-05-10T00:00:00Z',
description: 'The full text of the event',
state: 'VIC',
tags: [
'ordinary',
'advanced'
]
},
{
id: 2,
name: 'Another event',
url: '#',
datetime: '2017-05-12T00:00:00Z',
description: 'The full text of the event',
state: 'VIC',
tags: [
'beginner'
]
},
{
id: 3,
name: 'Great event',
url: '#',
datetime: '2017-05-18T00:00:00Z',
description: 'The full text of the event',
state: 'NSW',
tags: [
'beginner'
]
}
]
},
以下功能按预期工作,但我不知道如何让它搜索“标签”中的项目(已注释掉)。
searchevents: function(){
let result = this.events
if (this.filterValue){
result = result.filter(event =>
event.name.toLowerCase().includes(this.filterValue.toLowerCase()) ||
event.state.toLowerCase().includes(this.filterValue.toLowerCase())
// event.tags.toLowerCase().values().includes(this.filterValue.toLowerCase())
)
}
return result
}
以下返回一个空白数组,当我在 angular 中完成但在 vue 中没有完成时,此方法可以正常工作。
searchevents2: function(){
var searchRegex = new RegExp(this.filterValue,'i')
this.events.filter(function(event){
return !self.filterValue || searchRegex.test(event.name) || searchRegex.test(event.state)
})
}
理想情况下,我希望能够列出要过滤的数组项,或者只过滤整个数组。
感谢任何帮助,首先在这里发帖,所以要温柔。我在 Python 方面的经验比 Javascript 多得多,所以我有时也可能使用不正确的术语。
【问题讨论】:
-
我建议你缩短你的问题和代码。
-
我认为你的问题很好。我要补充的唯一真正有帮助的是一个可以修改以解决您的问题的工作示例。