我有一个这样的对象,但更复杂:
var obj =
{
a: foo,
b: bar,
sub:{
a: foz
}
}
然后我有一个基于键和值的条件,例如:
{
a: ^f,
sub:{
a: z$
}
}
是否有一种方法可以检查所有对象属性的条件是否为真。我对chome-only-features或类似下划线的东西也很好。我也可以重构我的条件结构。
答案 0 :(得分:2)
您可以使用deepEqual()或根据需要进行修改
var deepTest = function (x, y) {
if ((typeof x == "object" && x != null) && (typeof y == "object" && y != null)) {
if (Object.keys(x).length != Object.keys(y).length)
return false;
for (var prop in x) {
if (y.hasOwnProperty(prop))
{
if (! deepEqual(x[prop], y[prop]))
return false;
}
else
return false;
}
return true;
}
else if(x && (typeof y != "undefined")) return true; else return false;
}
document.write(deepEqual({a:{b:true}},{a:{c:1}}),'<br>');
document.write(deepEqual({a:{b:true}},{a:{b:1}}),'<br>');
document.write(deepEqual({a:{b:false}},{a:{c:1}}),'<br>');
document.write(deepEqual({a:{b:false}},{a:{b:1}}),'<br>');
document.write(deepEqual(true,true),'<br>');
document.write(deepEqual(true,false),'<br>');
document.write(deepEqual(false,false),'<br>');
document.write(deepEqual(false,false),'<br>');
document.write(deepEqual([true],[1]),'<br>');
document.write(deepEqual([true],[]),'<br>');
document.write(deepEqual([true],[]),'<br>');
document.write(deepEqual([true,true],[]),'<br>');
document.write(deepEqual([true,true],[1,2]),'<br>');
&#13;