是否有预先构建的函数来检查两个对象在JavaScript中是否具有相同的属性?
我已经问过了,但这是关于对象的 假设我有两个对象是否有预先构建的函数来检查两个对象在JavaScript中是否具有相同的属性?,javascript,object,Javascript,Object,我已经问过了,但这是关于对象的 假设我有两个对象 firstObject = {0: 1, 1: 2, 2: 3, 4: 4, 4: 5}; secondObject = {0: 5, 1: 4, 2: 3, 4: 2, 4: 1}; 我想知道它们是否包含相同的属性值,而顺序和属性名称并不重要。(对于上面的示例,函数应该返回true。)将对象转换为数组不是一个选项 我知道我可以编写一个函数来对它们进行排序,然后循环检查它们,但是是否有一个预构建的函数用于此 S.I已经注意到了,但是POST只
firstObject = {0: 1, 1: 2, 2: 3, 4: 4, 4: 5};
secondObject = {0: 5, 1: 4, 2: 3, 4: 2, 4: 1};
我想知道它们是否包含相同的属性值,而顺序和属性名称并不重要。(对于上面的示例,函数应该返回true。)将对象转换为数组不是一个选项
我知道我可以编写一个函数来对它们进行排序,然后循环检查它们,但是是否有一个预构建的函数用于此
S.I已经注意到了,但是POST只考虑在相同的属性名称下对象是否相等,而在我的示例中您可以看到,我只考虑属性值而不考虑属性名称。
下划线。 在两个对象之间执行优化的深度比较,以确定它们是否应被视为相等
var stooge = {name: 'moe', luckyNumbers: [13, 27, 34]};
var clone = {name: 'moe', luckyNumbers: [13, 27, 34]};
stooge == clone;
=> false
_.isEqual(stooge, clone);
=> true
是的,有。看看下划线或lodash。编辑:再次阅读时,您似乎只关心属性值,而不关心名称。不确定这些库,但互联网上肯定有人为此写了一些东西。请澄清,您只对属性值感兴趣,而不是属性名称。“秩序”这个词用错了。不同的顺序是
{foo:…,bar:…}
vs{bar:…,foo:…}
对象键的顺序不保证。@joews:与问题无关,OP只是使用了错误的术语。但现在是重新学习JavaScript的时候了:在下一个ECMAScript版本中,顺序似乎得到了保证。我明白了,我误解了这个问题。OP似乎只关心对象具有相同的属性值。不必将属性分配给相同的属性(至少我是这样理解这个问题的)。我已经测试过了。订单更改时,您提供的比较似乎不起作用。