javascript - 是否有测试对象是否与其他对象匹配的功能?

标签 javascript underscore.js

我有一个像这样但更复杂的对象:

var obj = 
{
  a: foo,
  b: bar,
  sub:{
    a: foz
    }
}

然后我有一个基于键和值的条件,例如:

{
  a: ^f,
  sub:{
     a: z$
  }
}

是否有一种方法可以检查所有对象属性的条件是否为真。我也很喜欢 chome-only-features 或类似下划线的东西。我还可以重新构造我的条件语句的结构。

最佳答案

也许你可以使用 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>');

关于javascript - 是否有测试对象是否与其他对象匹配的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659434/

相关文章:

javascript - 滚动时自动显示隐藏的 div

javascript - 无法在 page.evaluate PhantomJS 中设置 cookie

javascript - 在 Safari 中禁用 flex 滚动

javascript - 通过 css/javascript 更改指定样式?

javascript - JS Lodash : Multidimensional array to object, 有所变化

node.js - Meteor下划线无法调用未定义的方法 'exports'

javascript - 鉴于主干js,单击按钮不起作用

javascript - 检查上传文件是否受 Javascript 或 jQuery 密码保护

javascript - 下划线 - 比较两个对象数组(位置)

javascript - Lodash .clone 和 .cloneDeep 行为