Riveran
@Riveran
Astartes

Как в структуре с неизвестной вложенностью найти объект со свойством, имеющим определённое значение?

Необходимо найти и получить объект, у которого одно из свойств будет равно поисковой строке.

Например, есть массив:

let arrayData = [
    {
        value: 'test',
        newArray: [
            {
                value: 'zero',
                newArray: [
                    {
                        value: 'myValue'
                    }
                ]
            }
        ]
    }
]

и в нём необходимо найти и вернуть объект, у которого свойство будет равно 'myValue'.
Как это можно сделать?
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Рекурсия есть:

function find(data, val) {
  const values = data instanceof Object ? Object.values(data) : [];
  return values.includes(val)
    ? data
    : values.reduce((found, n) => found || find(n, val), null);
}


const obj = find(arrayData, 'myValue');

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

function find(data, val) {
  for (const stack = [ data ]; stack.length;) {
    const n = stack.pop();
    if (n instanceof Object) {
      const values = Object.values(n);
      if (values.includes(val)) {
        return n;
      }

      stack.push(...values);
    }
  }

  return null;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

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