代码之家  ›  专栏  ›  技术社区  ›  Varun Sharma

如果object中的所有值都为false,那么JavaScript中的object值应该为false

  •  -2
  • Varun Sharma  · 技术社区  · 8 年前

    我得到一个JSON数据对象。在对象中有多个“键”“值”。所以我试图在另一个变量中设置“false”,即使一个键值是false。

    我正在共享JSON数据。

    var objectVal= resp;
    console.log("json data values", objectVal);
    



    首次运行结果

    {"User_Name":{"color":true,"Edition":true,"Deletion":false}}  //result should true
    

    第二次运行的结果

    {"User_role":{"color":false,"Edition":true,"Deletion":true}}  //result should true
    

    第三次运行的结果

    {"User_role":{"color":false,"Edition":false,"Deletion":false}}  //result should false
    

    我看到过一个链接,但在这个链接中玩varibale。。 How to know if all javascript object values are true?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Mamun    8 年前

    您可以创建一个将对象作为参数的函数。在函数内部可以过滤出 true 价值观 filter() 是的 false 从函数中。

    var obj1 = {"User_Name":{"color":true,"Edition":true,"Deletion":false}}
    var obj2 = {"User_role":{"color":false,"Edition":true,"Deletion":true}}
    var obj3 = {"User_role":{"color":false,"Edition":false,"Deletion":false}}  
    
    function getStatus(obj){
      obj = obj[Object.keys(obj)[0]];
      var s = Object.values(obj).filter(o => o);
      if(s.length) return true;
      else return false;
    }
    console.log(getStatus(obj1)); // true
    console.log(getStatus(obj2)); // true
    console.log(getStatus(obj3)); // false
        2
  •  0
  •   Leite    8 年前

    可以使用递归函数检查主对象中的所有对象/值并返回 false

    function allTrue(ob) {
        let r = true;
        for (let v of Object.values(ob)) {
            r &= (typeof v === 'object') ? allTrue(v) : v;
        }
        return !!r; // return true/false instead of 1/0
    }
    
    let o1 = { a:true, b:true, c:true } // allTrue(o1) > true
    let o2 = { a:true, b:true, c:false } // allTrue(o2) > false
    let o3 = { a:{ a1:true, a2:true }, b:true} // allTrue(o3) > true
    let o4 = { a:false, b:{ b1:false, b2:true }} // allTrue(o4) > false
    
    console.log('o1', allTrue(o1), 'o2', allTrue(o2), 'o3', allTrue(o3), 'o4', allTrue(o4))