当前位置: 首页 > news >正文

js逻辑:【增量更新机制】

增量更新机制:在数据发生变化时,只对变化的部分进行更新的策略,而不是每次都重新处理全部数据,即:在数据发生变化时,只对变化的部分进行更新的策略,而不是每次都重新处理全部数据

watch: {baseLayerList: {deep: true,handler(newVal, oldVal = []) {// 使用Map来记录旧值中已处理的项,避免重复处理const oldItemsMap = new Map();// 将旧数据中的所有 subItem 提取出来并以 .id 为键存入 Map,便于后续快速查找oldVal.forEach(zxItem => {zxItem.list.forEach(subItem => {oldItemsMap.set(subItem.id, subItem); // 假设每个subItem有唯一id});});// 遍历新数据并判断是否新增newVal.forEach(zxItem => {zxItem.list.forEach(subItem => {// 只有当isShow从false变为true,且没有layer时才处理 const oldSubItem = oldItemsMap.get(subItem.id); // 当前项是“要显示”的 && (之前不存在该 ID 的项(首次出现) || 之前存在但状态不是“显示”) 才会触发 addJiChuMark 方法。if (subItem.isShow &&(!oldSubItem || !oldSubItem.isShow)) {this.addJiChuMark(subItem);}});});}},}

逻辑分析:

const oldItemsMap = new Map();
oldVal.forEach(zxItem => {zxItem.list.forEach(subItem => {oldItemsMap.set(subItem.id, subItem);});
});oldVal = [{ list: [ { id: 'a', isShow: false }, { id: 'b' } ] },{ list: [ { id: 'c' } ] }
]
====>
oldItemsMap = {'a' => { id: 'a', isShow: false },'b' => { id: 'b' },'c' => { id: 'c' }
}

相关文章:

  • 如何在 Vue 应用中嵌入 ONLYOFFICE 编辑器
  • 设计模式-三大工厂
  • 深入理解JavaScript设计模式之迭代器模式
  • STM32 串口通信②:蓝牙模块HC-05控制单片机
  • LSTM、GRU 与 Transformer网络模型参数计算
  • 1931. 用三种不同颜色为网格涂色
  • Spring Boot 集成 Apache Kafka 实战指南
  • Java面试复习:基础、并发、JVM及框架核心考点解析
  • 云零售新中枢:定制化“开源AI智能名片+S2B2C商城小程序”驱动的沉浸式触点进化论
  • Restormer: Efficient Transformer for High-Resolution Image Restoration 论文阅读
  • ✨通义万相2.1深度解析:AI视频生成引擎FLF2V-14B全流程指南(命令行参数+模型架构+数据流)
  • systemd[1]: Failed to start LSB: Bring up/down networking
  • [Java恶补day31] 21. 合并两个有序链表
  • 设计模式 | 单例模式
  • SpringBoot中使用表单数据有效性检验
  • FPGA基础 -- Verilog 命令行参数变量(Command-line Plusargs)
  • HarmonyOS应用开发——层叠布局
  • 2025高考志愿填报核心策略
  • 使用SRv6访问5G网络中的边缘应用
  • 【原创】【3】【辅助工具】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • 网页设计与制作课程实施报告/泰州百度seo
  • 典型营销型网站有哪些/惠州网络营销公司
  • 做网站 用什么语言好/南昌seo外包公司
  • 玩具网站设计/网络营销方案案例
  • 网上商店的业务流程/优化设计高中
  • 宝塔如何添加ip域名做网站/西安做网站的网络公司