Как посчитать строки в объекте с вложенными объектами с помощью рекурсии?

У меня есть объект со строками и вложенными объектами которые тоже содержат строки. Мне надо реализовать рекурсивную функцию которая посчитает все строки в этом объекте и вернёт число равное количеству этих строк. Накапливающая переменная должна быть внутри функции, не снаружи.

Я написал такую функцию, но она не считает строки у вложенных объектов, хотя в консоль строки выводятся. Что здесь нужно исправить чтобы код работал как нужно и если не затруднит подскажите пожалуйста в чем я ошибаюсь? Всё перепробовал, не понимаю почему так происходит.

 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]);
→ Ссылка