我得到一个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?
答案 0 :(得分:0)
您可以创建一个将对象作为参数的函数。在函数内部,您可以使用true
过滤掉filter()
值。然后,您可以检查长度以从函数返回true
或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
答案 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))