首页 > 解决方案 > 如何获取对象中布尔值的计数

问题描述

我必须在一个对象中获取布尔值的长度(如果它是真的)。谁能帮我解决这个问题?

var data = {
             mo: true, 
             tu: true, 
             we: true, 
             th: true, 
             fr: true, 
             sa: false, 
             su: false
           };

标签: javascriptjavascript-objects

解决方案


这里有两种方法(现代和更短与向后兼容和更长):

var data = {
             mo: true, 
             tu: true, 
             we: true, 
             th: true, 
             fr: true, 
             sa: false, 
             su: false
           };

const short = Object.values(data).filter((v) => v).length;

var long = 0;

for (var prop in data) {
  if (data.hasOwnProperty(prop) && data[prop]) {
    long++;
  }
}

console.log(short, long);

在现代版本中,我们只取对象中的值,过滤掉任何不真实的值,然后取结果数组的长度。

在向后兼容的版本中,我们遍历对象的属性,过滤掉任何不是它自己的属性或不真实的,并增加计数。


推荐阅读