I have the following data stored in a variable:
let categories = [
{
name: "a",
selected: false,
nodes: [
{
name: "aa",
selected: false
},
{
name: "ab",
selected: true
},
{
name: "ac",
selected: true
},
{
name: "ad",
selected: false
}
]
},
{
name: "b",
selected: false,
nodes: [
{
name: "ba",
selected: false
},
{
name: "bb",
selected: true
},
{
name: "bc",
selected: true
},
{
name: "bd",
selected: false
}
]
}
];
I want to count how much item has selected = true.
So I create the following function:
function getSelected(categories, counter = 0) {
for (let index = 0; index < categories.length; index++) {
const category = categories[index];
if (category.selected) {
counter++;
}
if (category.nodes && category.nodes.length) {
category.nodes.forEach(cat => getSelected([cat], counter));
}
}
return counter;
}
but it always returns 0.