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

Как получить все значения свойств вложенных объектов?

Нужно получить все значения свойств вложенного вложенных объектов в массив. Есть объект:

{ text: "sometext", style: { background: "red" } }

Нужно получить ["sometext", "red"].
  • Вопрос задан
  • 861 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Рекурсия есть:

const getPrimitives = data =>
  data instanceof Object
    ? Object.values(data).flatMap(getPrimitives)
    : [ data ];

const result = getPrimitives(obj);

или

function* getPrimitives(data) {
  if (data instanceof Object) {
    for (const k in data) if (data.hasOwnProperty(k)) {
      yield* getPrimitives(data[k]);
    }
  } else {
    yield data;
  }
}

const result = [...getPrimitives(obj)];

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

function getNestedData(data, test) {
  const result = [];

  for (const stack = [ data ]; stack.length;) {
    const n = stack.pop();

    if (n instanceof Object) {
      stack.push(...Object.values(n).reverse());
    }

    if (test(n)) {
      result.push(n);
    }
  }

  return result;
}

const resutl = getNestedData(obj, x => x !== Object(x));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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