Vue2、Vue3的Diff算法比较

前言

diff算法是vue更新dom前,比较新旧vdom的一种优化方式

特点:

  1. 只会在同一级比较

  2. 从两边往中间收拢

差别

  • vue2 和 vue3的差别在于处理完头尾节点后,对设于节点的处理方式
  • vue2 是遍历旧节点,将旧节点映射到map里,然后再遍历新节点,看是否有可以复用的再打上补丁
  • vue3 是建立一个 新节点的剩余节点在旧节点中的位置 的数组,然后通过数组找到一个最长递增子序列,然后这个序列的节点不动,再去移动剩下的节点。

最长递增子序列

js 复制代码
function lengthOfLIS(nums) {
  const n = nums.length;
  if (n === 0) return 0;

  const dp = new Array(n).fill(1);

  for (let i = 1; i < n; i++) {
    for (let j = 0; j < i; j++) {
      if (nums[i] > nums[j]) {
        dp[i] = Math.max(dp[i], dp[j] + 1)
      }
    }
  }

  return Math.max(...dp);
}
相关推荐
hh随便起个名1 小时前
力扣二叉树的三种遍历
javascript·数据结构·算法·leetcode
Dingdangcat863 小时前
城市交通多目标检测系统:YOLO11-MAN-FasterCGLU算法优化与实战应用_3
算法·目标检测·目标跟踪
tang&3 小时前
滑动窗口:双指针的优雅舞步,征服连续区间问题的利器
数据结构·算法·哈希算法·滑动窗口
拼命鼠鼠3 小时前
【算法】矩阵链乘法的动态规划算法
算法·矩阵·动态规划
LYFlied4 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
式5164 小时前
线性代数(八)非齐次方程组的解的结构
线性代数·算法·机器学习
橘颂TA5 小时前
【剑斩OFFER】算法的暴力美学——翻转对
算法·排序算法·结构与算法
叠叠乐5 小时前
robot_state_publisher 参数
java·前端·算法
hweiyu005 小时前
排序算法:冒泡排序
算法·排序算法
brave and determined5 小时前
CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
人工智能·算法·机器学习·ai·开发环境·算子开发·昇腾ai