全选反选逻辑核心是用isAllSelected布尔值控制状态,点击全选直接切换该值并批量更新数组selected字段;单个项点击后用every检查是否全选;反选则遍历翻转selected并同步更新isAllSelected。

实现全选和反选逻辑,关键在于正确维护一个“是否全选”的状态,并通过遍历数组来同步更新每个元素的选中状态。核心不是单纯循环,而是结合数据结构设计与事件响应。
用一个布尔值控制全选状态
不要每次点击“全选”都去遍历所有项再设为 true,而是用一个变量(如 isAllSelected)记录当前全选状态。点击全选按钮时,直接切换它,再批量更新数据数组中的 selected 字段:
- 如果 isAllSelected 为 true,把数组里每一项的 selected = true
- 如果为 false,则全部设为 false
遍历时判断是否需要更新单个项
用户点击某一项时,要动态更新 isAllSelected。方法是遍历整个数组,检查是否所有项的 selected 都为 true:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 全为 true → isAllSelected = true
- 存在至少一个 false → isAllSelected = false
- 推荐用 array.every(item => item.selected) 判断,简洁且语义清晰
反选逻辑:遍历并翻转每个 selected 值
反选不需要额外状态变量,直接对数组每一项执行取反操作即可:
立即学习“Java免费学习笔记(深入)”;
- arr.forEach(item => item.selected = !item.selected)
- 执行完后,再调用上一步的检查逻辑,更新 isAllSelected 的值
- 这样能保证 UI 和数据状态始终一致
避免直接修改原始数组(可选但推荐)
如果使用 React、Vue 等框架,或希望保持不可变性,遍历时应生成新数组:
- 全选:arr.map(item => ({ ...item, selected: true }))
- 反选:arr.map(item => ({ ...item, selected: !item.selected }))
- 单个切换:arr.map((item, i) => i === index ? { ...item, selected: !item.selected } : item)

















