首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将javascript对象的部分存储到变量中?

如何将javascript对象的部分存储到变量中?
EN

Stack Overflow用户
提问于 2021-08-26 15:07:07
回答 4查看 53关注 0票数 1

我对javascript很陌生,我有以下目标:

代码语言: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。我如何迭代这个对象并检查对象的这些特定部分?

这方面的预期产出将是

代码语言:javascript
复制
false

如果我要更新对象:

代码语言:javascript
复制
Stats: {
 "life": {
  "progress": 18,
  "counter": 1
 },
 "anxiety": {
  "progress": 24.5,
  "counter": 2
 },
 "mood": {
  "progress": null,
  "counter": 1
 },
 "cognition": {
  "progress": null,
  "counter": 1
 }
}

我想回去

代码语言:javascript
复制
True

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-08-26 15:09:12

可以将要签入数组的属性存储在数组中,使用Object.keys筛选出数组中未包含的属性,然后使用Array.every检查每个对象的counter属性是否大于0。

代码语言:javascript
复制
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
 }
}))

票数 2
EN

Stack Overflow用户

发布于 2021-08-26 15:15:35

我希望这个代码能帮你

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2021-08-26 15:22:21

使用Array.map()

代码语言:javascript
复制
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
 }
}))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68941072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档