首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中过滤json对象中的布尔值

在javascript中过滤json对象中的布尔值
EN

Stack Overflow用户
提问于 2018-07-07 04:10:10
回答 4查看 1.4K关注 0票数 0

我想在javascript中过滤json对象中的所有布尔值。我设法让它在一个简单的json对象上工作,但在我的例子中,我得到了一个嵌套的对象。下面是该对象的一个示例。我不知道如何管理这个结构。

代码语言:javascript
复制
{  
    "User1":
     {  
      "age":15,
      "country":"sw",
      "glasses":true,
      "car":true,
      "zip":1223,
      "name":"Frank"
    },
    "User2":
     {  
      "age":23,
      "country":"fr",
      "glasses":false,
      "car":true,
      "zip":5577,
      "name":"Mike"
    }
}

因此,我想收到这样的东西:

代码语言:javascript
复制
{  
   "User1":{  
      "glasses":true,
      "car":true
   },
   "User2":{  
      "glasses":false,
      "car":true
   }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-07 04:12:18

代码语言:javascript
复制
 const result = {};

 for(const [key, value] of Object.entries(input)) {
   const {glasses, car} = value;
   result[key] = {glasses, car};
}

只需迭代对象条目,并对内部对象进行一些解构。或者如果你真的想要每一个布尔值:

代码语言:javascript
复制
 const result = {};

 for(const [key, value] of Object.entries(input)) {
   const out = result[key] = {};
   for(const [innerKey, innerValue] of Object.entries(value)) {
     if(typeof innerValue === "boolean")
       out[innerKey] = innerValue;
   }
 }
票数 1
EN

Stack Overflow用户

发布于 2018-07-07 04:25:43

对于实际的JSON字符串,可以使用JSON.parse reviver parameter来排除或修改值:

代码语言:javascript
复制
var j = '{"User1":{"age":15,"country":"sw","glasses":true,"car":true,"zip":1223,"name":"Frank"},"User2":{"age":23,"country":"fr","glasses":false,"car":true,"zip":5577,"name":"Mike"}}';

var o = JSON.parse(j, (k, v) => typeof v == 'number' || typeof v == 'string' ? void 0 : v);

console.log(o);

票数 1
EN

Stack Overflow用户

发布于 2018-07-07 04:24:38

尝尝这个

代码语言:javascript
复制
function parse(obj , targetObject) {
var k;
if (obj instanceof Object) {
    for (k in obj){
        if(typeof(obj[k]) === "boolean"){
            targetObject[k] = obj[k];
        }
        if(obj[k] instanceof Object) {
            targetObject[k] = {};
            parse(obj[k],targetObject[k]);
        }
    }
} 

};

像这样调用:

代码语言:javascript
复制
var target = {};
parse(myObj , target);

希望这能有所帮助

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

https://stackoverflow.com/questions/51217008

复制
相关文章

相似问题

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