Задать вопрос
@Sergey750il

Как найти значение по ключу в объекте с неизвестной глубиной вложенности?

Как найти значение по ключу в объекте с неизвестной глубиной вложенности?
  • Вопрос задан
  • 190 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Рекурсия есть:

const find = (data, test, key) =>
  test(key, data)
    ? data
    : data === Object(data)
      ? Object.entries(data).reduce((found, n) =>
          found !== null ? found : find(n[1], test, n[0])
        , null)
      : null;

Рекурсии нет:

function find(data, test) {
  for (const stack = [ [ , data ] ]; stack.length;) {
    const [ k, v ] = stack.pop();
    if (test(k, v)) {
      return v;
    } else if (v instanceof Object) {
      stack.push(...Object.entries(v).reverse());
    }
  }

  return null;
}

Ищем:

const value = find(вложенный_объект, k => k === 'ключ');
Ответ написан
Комментировать
@MikUrrey
Доброго!
const findByKey = (object, key) => {
 if (object instanceof Array) {
  for (let i = 0; i < object.length; i++) {
    let result = findByKey(object[i], key);
    if (result  !== null) {
     return result;
    }
  }
  return null;
 }
 for (let p in object) {
  if (p === key) {
   return object[p]
  } else if (typeof object[p] === 'object') {
   let result = findByKey(object[p], key);
   if (result  !== null) {
    return result;
   }
  }
 }
 return null;
}

findByKey(someObject, someKey)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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