Что нужно вернуть, чтобы прекратить рекурсию?

Вывести по названию свойства значение, первое совпадение завершает работу.

function getValue(objectValus, property) {
  for(let prop in objectValus) {
    if (prop === property) {
      return objectValus[prop];
    } else if (typeof(objectValus[prop]) === 'object') {
      return getValue(objectValus[prop], property);
    } else {
      //return continue;
    }
  }
}

console.log(getValue({ a: { b: 5 }, c: { e: 4 }, g: 5 }, 'e'));


Как продолжить выполнение, если во внутреннем массиве переменная не найдена ?
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Не "что", а "в каком случае".

return getValue(objectValus[prop], property);

Надо не тупо возвращать результат рекурсивного вызова, а сначала проверять, что там не undefined, например.

А вообще, можно и попроще сделать:

const getValue = (obj, key) => Object
  .values(obj ?? {})
  .reduce((found, n) => found ?? getValue(n, key), obj?.[key]);
Ответ написан
Комментировать
@kttotto
пофиг на чем писать
Если не найдена, то ничего возвращать и не надо.
function getValue(objectValus, property) {
    for (let prop in objectValus) {
        if (prop === property) {
            if (typeof(objectValus[prop]) === 'object') {
                return getValue(objectValus[prop], property);
            }
            return objectValus[prop];
        }
    }
    return undefined;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы