代码之家  ›  专栏  ›  技术社区  ›  Marty

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

  •  3
  • Marty  · 技术社区  · 6 年前

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

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

    4 回复  |  直到 6 年前
        1
  •  3
  •   CertainPerformance    6 年前

    使用 reduce values 对于每个对象,提取 active 属性,并将该布尔值添加到累加器中,累加器将强制将其转换为数字:

    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)
    );
        2
  •  1
  •   brk    6 年前

    使用 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)
        3
  •  1
  •   Mamun    6 年前

    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)
        4
  •  0
  •   Sk96    6 年前

    你可以试试这个

    var filters = {
      module: {
        value: "All",
        active: false
      },
      dates: {
        value: [],
        active: true
      }
    };
    
    console.log(Object.values(filters).filter(element => element.active === true).length)