我对javascript很陌生,我有以下目标:
Stats: {
"life": {
"progress": 18,
"counter": 1
},
"anxiety": {
"progress": 24.5,
"counter": 2
},
"mood": {
"progress": null,
"counter": 0
},
"cognition": {
"progress": null,
"counter": 0
}
}我需要检查焦虑、情绪和认知的计数器是否> 0,如果是的话,我必须返回True。我如何迭代这个对象并检查对象的这些特定部分?
这方面的预期产出将是
false如果我要更新对象:
Stats: {
"life": {
"progress": 18,
"counter": 1
},
"anxiety": {
"progress": 24.5,
"counter": 2
},
"mood": {
"progress": null,
"counter": 1
},
"cognition": {
"progress": null,
"counter": 1
}
}我想回去
True谢谢。
发布于 2021-08-26 15:09:12
可以将要签入数组的属性存储在数组中,使用Object.keys筛选出数组中未包含的属性,然后使用Array.every检查每个对象的counter属性是否大于0。
const keysToCheck = ["anxiety", "mood", "cognition"]
function validate(obj){
return Object.keys(obj).filter(key => keysToCheck.includes(key)).every(key => obj[key].counter > 0);
}
console.log(validate({
"life": {
"progress": 18,
"counter": 1
},
"anxiety": {
"progress": 24.5,
"counter": 2
},
"mood": {
"progress": null,
"counter": 0
},
"cognition": {
"progress": null,
"counter": 0
}
}))
发布于 2021-08-26 15:15:35
我希望这个代码能帮你
var obj = {Stats: {
"life": {
"progress": 18,
"counter": 1
},
"anxiety": {
"progress": 24.5,
"counter": 2
},
"mood": {
"progress": null,
"counter": 0
},
"cognition": {
"progress": null,
"counter": 0
}
}}
Object.values(obj.Stats).every(o=> o.counter > 0)发布于 2021-08-26 15:22:21
使用Array.map():
const keysToCheck = ["anxiety", "mood", "cognition"]
function validate(obj){
let res = 0;
keysToCheck.forEach(key =>{ if(obj[key].counter > 0) res++; })
return res == keysToCheck.length;
}
console.log(validate({
"life": {
"progress": 18,
"counter": 1
},
"anxiety": {
"progress": 24.5,
"counter": 2
},
"mood": {
"progress": null,
"counter": 0
},
"cognition": {
"progress": null,
"counter": 0
}
}))
console.log(validate({
"life": {
"progress": 18,
"counter": 1
},
"anxiety": {
"progress": 24.5,
"counter": 2
},
"mood": {
"progress": null,
"counter": 1
},
"cognition": {
"progress": null,
"counter": 1
}
}))
https://stackoverflow.com/questions/68941072
复制相似问题