如果对象中的所有值均为false,则JavaScript中的对象值应为False

时间:2018-09-05 10:34:40

标签: javascript jquery json

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

我正在共享JSON数据。

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

下面是控制台中的JSON数据,整个JSON数据是动态的。

第一次运行的结果

{"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

我已经看到一个链接,但是在此链接中,播放杂音.. How to know if all javascript object values are true?

2 个答案:

答案 0 :(得分:0)

您可以创建一个将对象作为参数的函数。在函数内部,您可以使用true过滤掉filter()值。然后,您可以检查长度以从函数返回truefalse

尝试以下方式:

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

答案 1 :(得分:0)

您可以具有一个递归函数,该函数将检查主对象中的所有对象/值,如果确实有错误,则返回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))