Задать вопрос
yarkov
@yarkov
Помог ответ? Отметь решением.

Как получить массив ключей с вложенностью?

const data = {
  key: {
    nested: {
	    double_nested: 'value'
    }
  },
  other: {
    nested: {
	    double_nested: 'value'
    }
  }
}
// Надо получить такой массив
// ['key.nested.double_nested', 'other.nested.double_nested']
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
yarkov
@yarkov Автор вопроса, куратор тега JavaScript
Помог ответ? Отметь решением.
И сам отвечу: https://stackoverflow.com/questions/47062922/how-t...

UPD: Допиленный вариант: https://jsfiddle.net/yarkov_aleksei/dvp7k9h6/

const data = {
  param: 'value',
  key: {
    nested: {
      double_nested: 'value'
    }
  },
  nested: {
    array: ['key 1', 'key 2']
  }
}

function getObjectKeys(obj, prefix = '') {
  const keys = Object.keys(obj).reduce((res, el) => {
    if (Array.isArray(obj[el])) {
      return [...res, ...obj[el].map((item, i) => `${prefix}${el}[${i}]`)]
    } else if (obj[el] !== null && typeof obj[el] === 'object') {
      return [...res, ...getObjectKeys(obj[el], prefix + el + '.')]
    } else {
      return [...res, prefix + el]
    }
  }, [])
  keys.sort()
  return keys
}

const array = getObjectKeys(data)
console.log(array)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Shugich
@Shugich
Фронтенд-разработчик
Например так, если я все правильно понял:

const array = [];

for (key in data) {
  array.push({[key]: data[key]});
}
Ответ написан
Ваш ответ на вопрос

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

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