Javascript 用过滤器更换接头

Javascript 用过滤器更换接头,javascript,ecmascript-6,filter,Javascript,Ecmascript 6,Filter,我还没有太多的机会使用过滤器,但我决定稍微缩短我的代码,不幸的是,它不能像我希望的那样工作。我编写了一个函数,以一种很好的方式从数组中删除元素,效果很好: this.error_log.map((error, i) => { if (error.message.info == message) { this.error_log.splice(i, 1) } })

我还没有太多的机会使用过滤器,但我决定稍微缩短我的代码,不幸的是,它不能像我希望的那样工作。我编写了一个函数,以一种很好的方式从数组中删除元素,效果很好:

this.error_log.map((error, i) => {
                if (error.message.info == message) {
                    this.error_log.splice(i, 1)
                }
            })
实际上它工作得很好,但我想重写它以过滤,不幸的是它不工作,我也不知道为什么,有人能解释一下我在这里做错了什么吗

this.error_log.filter(error => error.message.info !== message)
试试这个:

this.error_log = this.error_log.filter(error => error.message.info !== message);

看起来不错。您收到了什么?.filter不会改变数组。map也不会,但您正在进行拼接,这确实会修改阵列。过滤器返回一个结果。使用this.error\u log=this.error\u log.filtererror=>error.message.info!==留言。请务必先查看。第一句话说filter方法创建了一个新的数组请避免使用.map之类的东西来简单地遍历数组。每个数组迭代方法都有一个目的和意义——使用它们只是为了循环,而忽略它们应该在什么时候和为什么使用,这绝对不是好代码。呃,这就是问题所在。。。不管怎样,它是有效的:我会在12分钟内把它标记为答案,谢谢!