调用 filter() 后数据没变是因为未将返回的新数组赋值给变量;filter() 不修改原数组,必须显式赋值并触发重渲染或手动更新 dom。

点击按钮触发 filter() 时数据没变?检查数组是否被重新赋值
前端本地过滤最常踩的坑是:调用 filter() 后没把返回的新数组赋给变量,原数组不变,DOM 也不更新。JavaScript 的 filter() 不修改原数组,它返回一个新数组。
- 错误写法:
data.filter(item => item.status === 'active')—— 结果被丢弃了 - 正确做法:必须显式赋值,比如
filteredData = data.filter(item => item.name.includes(searchTerm)) - 如果用 React,记得触发重渲染,比如
setFilteredData(...);纯 HTML + JS 则要手动清空并重写innerHTML - 注意:若
data是对象引用(如从 API 获取的数组),直接赋值没问题;但若用了Object.freeze()或 Proxy 拦截,filter()仍能工作,只是后续 DOM 更新可能失败
按钮绑定事件后无响应?确认 addEventListener 时机和作用域
常见现象是点击按钮控制台没报错,但过滤逻辑完全不执行——大概率是事件监听器没绑上,或绑在了还没生成的元素上。
- 确保 DOM 加载完成后再绑定,比如放在
window.addEventListener('DOMContentLoaded', ...)里,或把 script 放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











