@Sergey750il

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

Как найти значение по ключу в объекте с неизвестной глубиной вложенности?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Рекурсия есть:

const find = (data, key) => Object
  .entries(data instanceof Object ? data : {})
  .reduce((found, [ k, v ]) => found ?? (k === key ? v : find(v, key)), null);

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

function find(data, key) {
  for (const stack = [ data ]; stack.length; ) {
    const n = stack.pop();
    if (n?.hasOwnProperty(key)) {
      return n[key];
    }

    stack.push(...Object.values(n ?? {}));
  }

  return null;
}
Ответ написан
Комментировать
@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)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы