Как посчитать строки в объекте с вложенными объектами с помощью рекурсии?
У меня есть объект со строками и вложенными объектами которые тоже содержат строки. Мне надо реализовать рекурсивную функцию которая посчитает все строки в этом объекте и вернёт число равное количеству этих строк. Накапливающая переменная должна быть внутри функции, не снаружи.
Я написал такую функцию, но она не считает строки у вложенных объектов, хотя в консоль строки выводятся. Что здесь нужно исправить чтобы код работал как нужно и если не затруднит подскажите пожалуйста в чем я ошибаюсь? Всё перепробовал, не понимаю почему так происходит.
function getStringCount(object, akum) {
if (akum === undefined) {
akum = 0;
}
for (let key in object) {
if (typeof object[key] === 'string') {
console.log('its string: ' + object[key]);
akum = akum + 1
}
if (typeof object[key] === 'object') {
getStringCount(object[key], akum);
}
}
return akum
}
console.log(getStringCount({
prop1: '2',
prop2: {
prop3: {
prop4: 'hey',
}
},
prop5: 4,
}))
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
function getStringCount(object, akum) {
function getStringCount(object) {
if (akum === undefined) { akum = 0; }
var akum = 0; // хотя я бы назвал res
getStringCount(object[key], akum);
akum += getStringCount(object[key]);