在node.js中比较两个JSON格式的对象数据的最有效方法是什么?
这些对象不包含"undefined"或函数,它们的原型是Object
.
我听说如果在node.js中有JSON,那么有很好的支持
朋友们!如果我听不懂或用错误的术语解释问题,我深感抱歉。我要做的就是比较两个JSON标准化数据的相等性,如下所示:
{"skip":0, "limit":7, "arr": [1682, 439, {"x":2, arr:[]}] }
{"skip":0, "limit":7, "arr": [1682, 450, "a", ["something"] }
我100%肯定这些数据中不会有任何功能Date
,null
或undefined
等等。我想说的是,我不想在最一般的情况下比较JavaScript对象(具有复杂的原型,循环链接和所有这些东西)。这些数据的原型将是Object
。我也相信很多熟练的程序员已经回答了我这个问题。
我最想念的是我不知道如何正确解释我的问题。请随时编辑我的帖子。
我的答案:
第一种方式:效率低下但可靠。您可以像这样修改通用方法,这样就不会浪费时间寻找函数和undefined
。请注意,泛型方法将对象重复三次(for .. in
内部有三个循环)
第二种方式:高效但有一个限制。我发现JSON.stringify
在node.js中速度非常快。最快的解决方案是:
JSON.stringify(data1) == JSON.stringify(data2)
非常重要的提示!据我所知,JavaScript和JSON都与对象字段的顺序无关。但是,如果比较由对象组成的字符串,这将非常重要。在我的程序中,对象字段始终以相同的顺序创建,因此上面的代码可以正常工作。我没有在V8文档中进行搜索,但是我认为我们可以依靠字段创建顺序。在其他情况下,请注意使用此方法。
在我的具体情况下,第二种方法的效率是第一种方法的10倍。
归档时间: |
|
查看次数: |
17616 次 |
最近记录: |