使用JavaScript获取JSON中的真值计数

时间:2018-08-19 07:05:55

标签: javascript json

我有一个像这样的JSON对象:

filters: {
        module: {
            value: "All",
            active: false
        },
        dates: {
            value: [],
            active: true
        }
    }

如何根据此对象计算活动过滤器?

4 个答案:

答案 0 :(得分:3)

使用reduce遍历每个对象的values,从每个对象中提取active属性,然后将该布尔值添加到累加器,该布尔值会将其强制为一个数字:< / p>

const obj = {
  filters: {
    module: {
      value: "All",
      active: false
    },
    dates: {
      value: [],
      active: true
    },
    foo: {
      value: "All",
      active: false
    },
    bar: {
      value: [],
      active: true
    }
  }
};

console.log(
  Object.values(obj.filters).reduce((a, { active }) => a + active, 0)
);

答案 1 :(得分:1)

使用Object.keys获取过滤器中的所有键,这将给出一个数组,然后使用reduce函数计算有效true的数量

let someObj = {
  filters: {
    module: {
      value: "All",
      active: false
    },
    dates: {
      value: [],
      active: true
    }
  }

};

let count = Object.keys(someObj.filters).reduce(function(acc, curr) {
  if (someObj.filters[curr].active === true) {
    acc += 1;
  }
  return acc;
}, 0);

console.log(count)

答案 2 :(得分:1)

您可以使用Object.keys()filter()

var filters = {
        module: {
            value: "All",
            active: false
        },
        dates: {
            value: [],
            active: true
        }
    }
    
var active = Object.keys(filters).filter(k => filters[k].active);

console.log(active.length)

答案 3 :(得分:0)

您可以尝试

var filters = {
  module: {
    value: "All",
    active: false
  },
  dates: {
    value: [],
    active: true
  }
};

console.log(Object.values(filters).filter(element => element.active === true).length)

希望这会有所帮助!