bug感悟
第一段代码
let arr = this.removeData;
arr.map((v) => {
this.stationtableData.push(v);
});
this.tableData = this.tableData.filter(
(v) => !arr.some((ele) => ele.buildId === v.buildId)
);
第二段代码
this.removeData.forEach((v) => {
this.stationtableData.push(v);
});
this.tableData = this.tableData.filter(
(v) => !this.removeData.some((ele) => ele.buildId === v.buildId)
);
两个代码有什么不同?
这两段代码的主要区别在于在 forEach 方法和 map 方法之间。
map 方法会对 this.removeData 数组中的每个元素执行给定的回调函数,并返回一个新数组,新数组是根据回调函数的返回值生成的。因此,对 this.removeData 数组的修改不会影响原数组。
在第一段代码中,使用 map 方法返回了一个新数组 arr 并对其进行操作,不会改变原始的 this.removeData 数组。然后,使用 arr.some 方法对 this.tableData 数组中的元素进行条件判断。
而第二段代码中,直接使用 this.removeData 数组调用了 forEach 方法,并对 this.stationtableData 数组进行操作,直接改变了原始的 this.removeData 数组。然后,使用 this.removeData.some 方法对 this.tableData 数组中的元素进行条件判断。
因此,这两段代码对 this.removeData 数组的修改及对 this.tableData 数组的条件判断是不同的。如果你希望保留对 this.removeData 原数组的操作和对 this.tableData 的条件判断,则应该选择第一段代码;如果你想在循环过程中直接修改原数组,并对 this.tableData 执行条件判断,则应该选择第二段代码。```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现