gpt4 book ai didi

javascript - 检测复杂对象的变化

转载 作者:行者123 更新时间:2023-11-28 01:41:10 25 4
gpt4 key购买 nike

我正在用 JavaScript 编写一个编译器,对于优化器,我遵循通常的模式,即重复运行优化列表,直到没有任何反应为止。检测“什么也没发生”条件的明显方法是让每个优化在成功执行某些操作时设置一个标志。我想知道是否有更优雅的方法来实现它。

简而言之,问题可以这样表述:给定一个复杂的对象(具有许多级别的子对象,包括带有循环引用的数组等),通过可能的转换运行它,然后检测是否有任何更改。所以问题是是否有一种简单的方法来检测复杂对象的变化。

Watch.js 提供了检测对象更改的方法,但仅限于顶层,并且如果字段发生更改,即使该字段随后返回到其原始值,也会触发。

另一种方法是制作对象的深拷贝,然后与原始对象进行深层比较。然而,从这里的其他问题来看,深度复制看起来像是一个不平凡的操作,而深度比较也有其自身的挑战。

我是否缺少一个优雅的技巧,或者我应该坚持让每个优化过程都做自己的簿记工作?

最佳答案

我只想将此作为评论发布,但我没有所需的代表。

我不知道这是否适合您的情况,但您可以做的是转换为 JSON,然后比较字符串:

JSON.stringify(firstObject) === JSON.stringify(secondObject) 

再环顾四周,发现另一个 stackoverflow 帖子也有类似的问题。有一个与我类似的解决方案,但我发现最有趣的是第二个解决方案,没有选择作为答案,我认为它有您需要的: Object comparison in JavaScript

关于javascript - 检测复杂对象的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com