Создание динамических ключей в объекте - PullRequest
0 голосов
/ 24 ноября 2018

Я изо всех сил пытаюсь создать динамические вложенные ключи в JavaScript.Моя проблема в том, что мне нужен объект, подобный этому

{
    "grandGrandFather": 'A',
    "firstGrandFather": {
        name: "AA",
        children: {
            first: 'AAA',
            children: {
                first: "AAAA"
                }
            }
        }, 
    "secondGrandFather": {
        name: "AB",
        first: 'ABA',
            children: {
                first: "ABAA",
                second: "ABAB"
                }
            }
        }, 
    "thirdGrandFather": {
        name: "AC",
        children: {
            name: "ACA"

            }
        }     
}

Здесь проблема в том, что мне нужно извлекать эти данные откуда-то, и мне нужно создавать эти значения динамически.Создание реквизита начинается с первого уровня и продолжается до четвертого уровня.Поэтому мой вопрос заключается в том, как я могу создавать динамические ключи в JS.Также я знаю, что вы можете создавать динамические ключи в JS следующим образом:

var obj = {
    prop1: "a",
    prop2: "b",
   prop3:'c'

}
obj['prop4'] = 'd';

Кроме того, я успешно создавал реквизиты на уровне, но когда мне нужно сложить их, я запутался, любая помощь была бы признательна.

Дополнительные сведения о вышеуказанном объекте

В созданном выше объекте, который я создал, я получаю данные из базы данных и мне необходимо добавить firstGrandFather, secondGrandFather, thirdGrandFather динамически.Кроме того, я не знаю, какие реквизиты их детей мне нужно было бы определить в объекте.У некоторых может быть супруга, возраст, работа реквизит внутри, некоторые могут не иметь, также я не знаю, сколько из них я получу.И это продолжается еще на один или два уровня.

В php было бы легко создать их в ассоциативном массиве, но мне трудно делать это в JS.

1 Ответ

0 голосов
/ 24 ноября 2018

динамические ключи возможны в ES6 + Документы здесь

В основном, синтаксис:

obj[variable] = value;

Переменная должна содержать примитивное значение.


Что касается стеков, боюсь, вам придется привыкнуть к работе с глубокими клавишами с точечной или скобочной нотацией.Вы также можете присвоить свойство вашего объекта переменной, а затем получить доступ к ее реквизиту.Поэтому, если obj является объектом из вашего примера:

const firstGrandfathersChildren = obj.firstGrandFather.children

Ему будет назначено следующее:

{
    first: 'AAA',
        children: {
            first: "AAAA"
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...