我有一系列按钮,使用类似于此的函数将过滤器应用于对象:
isNew(type) {
//need to reset filter first
this.results = this.results.filter(function(type) {
return type.has_user_viewed === true
})
console.log('isNew');
}
我遇到的问题是,如果用户单击应用了一个过滤器,然后应用了另一个过滤器,则会再次过滤过滤后的数组。我需要做的就是在应用新过滤器之前将对象重置为原始状态。不知道如何在这里“重置”过滤器?
答案 0 :(得分:0)
只需将未过滤的数据保存到变量中即可。 filter
每次都会创建一个新的数组对象(浅复制元素),因此您的代码会使用过滤后的数据覆盖原始数据:
this.data = [...whatever the source is]
isNew(type) {
//need to reset filter first
this.results = this.data.filter(function(type) {
return type.has_user_viewed === true
})
console.log('isNew');
}
答案 1 :(得分:0)
如果您想稍后访问原始结果列表以进行其他过滤,则可能需要将过滤器的结果存储在除此之外的其他位置。请注意,此更改可能会强制您更改其他代码。
我推荐的一个例子:
this.filteredResults = this.results.filter(function(type) {
return type.has_user_viewed === true
})
我建议你谷歌不变性,因为理解它将在你将来需要解决类似问题时帮助你。