【发布时间】:2018-12-31 00:11:00
【问题描述】:
我目前正在构建一个小型应用程序是 Vanilla JS(没有任何依赖项,如 lodash/jquery),我需要比较两个对象以检查键和值是否相等。我只是想知道如何优化这个问题。
两个对象的键顺序相同,因为它们派生自相同的方法。根据这个answer,最快和最有效的方法是使用JSON.stringify(object1) === JSON.stringify(object2)。
但是,在我的应用程序中,如果两个对象不相等,那么我会遍历它们两个并执行一些操作。问题是这些操作的性能非常繁重,并且偶尔会运行。我需要优化我的解决方案。
因此,我想知道JSON.stringify 是否也在内部运行某种for 循环。在我的应用程序中,这两个对象更有可能不相等。因此,如果JSON.stringify 也运行某种for 循环,我可以删除检查并立即运行我需要的操作(这只会在两个对象不相等时导致程序不同) 节省时间并使其更加优化。如果我不这样做,那么从技术上讲,我将在两个对象不相等时运行两个 for 循环以实现完全相同的目的,并在两个对象相等时运行一个 for 循环。如果JSON.stringify 在内部是某种for 循环,那么无论对象是否相等,我都可以只循环一个for。我在这里有意义吗?如果您有什么不明白的地方,请告诉我。这个检查没用吗?我应该删除它以优化我的代码吗?
【问题讨论】:
标签: javascript performance loops object optimization