React/Vue 中虚拟DOM中的diff算法为什么是O(n)?

发布于 2022-09-12 04:04:27 字数 115 浏览 18 评论 0

diff 时新旧两个tree的子节点对比时,要去找旧节点中对应的key节点,这种需要两层循环,难道时间复杂度不是O(n*n)吗?
我能想到是O(n)的方法是将旧节点中的具有key的节点先遍历一次用hash存下来

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

余厌 2022-09-19 04:04:27

因为在算法中理论上他们生成的树的结构应该是一模一样的,同样的位置上的dom应该是一样的。不一样的话,就触发更新了

后知后觉 2022-09-19 04:04:27

看到一个文章确实是用了hash(map),当从头到尾一一比较存在key对应不上时,就用map来存储oldFiber中有key的节点

image.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文