javascript在应用新对象之前删除对象的先前过滤器

时间:2017-12-02 18:50:19

标签: javascript

我有一系列按钮,使用类似于此的函数将过滤器应用于对象:

isNew(type) {
    //need to reset filter first
    this.results = this.results.filter(function(type) {
        return type.has_user_viewed === true
    })
    console.log('isNew');

}

我遇到的问题是,如果用户单击应用了一个过滤器,然后应用了另一个过滤器,则会再次过滤过滤后的数组。我需要做的就是在应用新过滤器之前将对象重置为原始状态。不知道如何在这里“重置”过滤器?

2 个答案:

答案 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
})

我建议你谷歌不变性,因为理解它将在你将来需要解决类似问题时帮助你。