Есть массив или объект различной вложенности, задача чтобы в нем посчитать все имеющиеся строчные элементы. Я её решил, если задавать счетчик строк как глобальную переменную.
let countString = 0;
function getStringCount(object) {
for (let i in object) {
if (typeof object[i] === "object") {
getStringCount(object[i]);
} else {
if (typeof object[i] === "string") {
countString++;
}
}
}
return countString;
}
console.log(getStringCount([1, 2, 3, "1", ["1", 1, ["f", 1]]]));
Но так получается слишком коряво, хочу чтобы переменная задавалась внутри функции. Пытаюсь использовать возможности ES6, переменная при каждом следующем вызове функции себя самой - обновляется. Что я делаю не так? На что обращать внимание? Как правильно при рекурсии задать переменные, чтобы она не обновлялась?
function getStringCount(object, countString) {
countString = countString || 0;
for (let i in object) {
if (typeof object[i] === "object") {
getStringCount(object[i], countString);
} else {
if (typeof object[i] === "string") {
countString++;
}
}
}
return countString;
}