假设我们有两个对象:
var foo = {
a: 3,
b: 'yellow',
c: {
d: 5,
e: 'green'
}
},
bar = {
b: 'yellow',
c: {
d: 5,
e: 'green'
}
};
检查foo
包含bar
的最佳方式是什么?
我已在我的应用程序中使用Lodash,因此如果它更容易,您可以使用该库中的函数。否则,香草JS很好。
[编辑]
好吧,让我试着解释一下当我使用term' contains'时我的意思。我会用LoDash术语来做。
LoDash有_.extend
方法,所以如果有2个对象:
var obj1 = {a:1, b:2},
obj2 = {b:4, c:{d:'green', e:5}}
然后操作_.extend(obj1, obj2)
将延伸' obj1
- 它现在具有值
{a:1, b:4, c:{d:'green', e:5}}
即。 obj1
'包含' obj2
现在。
答案 0 :(得分:2)
_.isMatch(foo, bar)
完成了工作。
答案 1 :(得分:1)
@GregL为这个问题提供了一个有效的解决方案。这个对我有用。但我发现了类似的更简洁的解决方案,所以我决定透露它:
_.some([foo], bar)
答案 2 :(得分:0)
function containsObject(parent, child) {
return !!_.findWhere(_.flatten([parent]), child);
}
alert(containsObject(foo, bar)); // alerts "true"