我试图使用.isEquallodash-node包中的方法比较两个对象.即使对象相同,.isEqual也要返回false.
var _ = require('lodash-node');
var obj1 = {"properties":{"property":[{"comfort":["2.4 GHz"]},{"name":["Mosaic"]}]}};
var obj2 = {"properties":{"property":[{"name":["Mosaic"]},{"comfort":["2.4 GHz"]}]}};
if(_.isEqual(obj1, obj2)) //--> Returns false
console.log('same')
else
console.log('not same');
Run Code Online (Sandbox Code Playgroud)
节点: - v0.12.7
lodash-node: - v3.10.1
对象看起来与我类似.请指出是否有任何区别.
我意识到这不适用于您的示例,但我发现了另一种情况,其中 lodash 对于JSON.stringify返回相同字符串的对象返回不相等。
就我而言,一个对象具有一个具有该值的属性undefined,而另一个对象根本没有该属性。
就我个人而言,我认为 lodash 在这种情况下是不正确的,但它有点主观。
数组中的顺序很重要,所以
_.isEqual([1,2], [2, 1]) === false
Run Code Online (Sandbox Code Playgroud)
这就是为什么您的示例返回 false 的原因。