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

多维对象中某个键的“真”计数

  •  -2
  • morne  · 技术社区  · 7 年前

    我有一系列的( group )对象。在每个组对象中,我有一个( item )对象。

    每个对象(组和项)都包含一个名为 show_on_graph

    在图上显示 设置为true。

    true 价值观?

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   Nguyen Phong Thien    7 年前

    应该是

    const count = toppics.reduce((sum, val) => {
        if (val.show_on_graph) {
            sum++;
        }
        return sum;
    }, 0);
    

    如果你使用 lodash , _.countBy

        2
  •  0
  •   Nina Scholz    7 年前

    您可以采用迭代和递归的方法,通过迭代对象的所有键/值对,并对找到的对象进行计数或对嵌套对象进行计数。

    function getCount(object, key, value) {         
        if (!object || typeof object !== 'object') return 0;
        return Object
            .entries(object)
            .reduce((c, [k, v]) => c + (k === key && v === value || getCount(v)), 0);
    }
    

    与…通话

    getCount(object, 'show_on_graph', true);