调用filter方法过滤对象内部数组时执行无效果问题求助
问题原因
- JavaScript 中的
filter方法不会修改原数组,仅会返回一个包含所有符合过滤条件元素的新数组。你的代码中仅执行了过滤操作,但没有将返回的新数组赋值给变量,所以原有following变量的值始终没有变化。 - 即使直接对
this.user?.following调用filter,同样因为没有接收返回值,原数组也不会被修改。
修复后的代码
unfollow(handle: any) { // 接收filter返回的新数组 let following = (this.user?.following || []).filter((userHandle) => userHandle !== handle); // 如果需要同步更新this.user上的following属性,可添加下方代码 if (this.user) { this.user.following = following; } console.log(following); }
补充说明
- 如果你需要直接修改原数组,可以改用
splice方法实现过滤,但更推荐使用filter生成新数组的写法,符合不可变数据的最佳实践,能避免很多意料之外的副作用。
内容的提问来源于stack exchange,提问作者Reem Obeid
相关产品推荐
相关产品推荐

