javascript - 在对象中创建动态键

标签 javascript arrays object

我正在努力在 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"

            }
        }     
}

这里的问题是我需要从某个地方获取这些数据并且我需要动态地创建这些值。 Prop 创作从第一层开始,一直到第四层。所以我的问题是如何在 JS 中创建动态键。我也知道你可以像这样在 JS 中创建动态键:

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

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

此外,我已经成功地创建了一个关卡 Prop ,但是当我需要堆叠这些 Prop 时,我感到很困惑,我们将不胜感激。

关于上述对象的更多细节

在我创建的上述对象中,我从数据库中获取数据,我需要动态添加firstGrandFather、secondGrandFather、thirdGrandFather。我也不知道我需要定义的他们的 child Prop 会在对象中。有些可能有 配偶、年龄、工作 Prop ,有些可能没有,我也不知道我会得到多少。这些会持续一两个级别。

在 php 中很容易在关联数组中创建这些,但我在 JS 中很难做到这一点。

最佳答案

动态键在 ES6+ 中是可能的 Docs here

基本上,语法是:

obj[variable] = value;

变量必须包含原始值。


至于堆栈,恐怕您必须习惯使用点或括号表示法进行深度键访问。您还可以将对象的属性分配给变量,然后访问它的 Prop 。 因此,如果 obj 是您示例中的对象:

const firstGrandfathersChildren = obj.firstGrandFather.children

它将分配以下内容:

{
    first: 'AAA',
        children: {
            first: "AAAA"
        }
}

关于javascript - 在对象中创建动态键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53460072/

相关文章:

javascript - 如何使用 Protractor 检查元素是否不可点击?

c - 为什么 *(a+b) 在 C 而不是 a[b] 中工作?

c - 将数组分配给指针混淆

java - 我在java中的For循环做错了什么?

python - 使用 Python 转换为 JSON 的对象列表

javascript - 如何使用map()、reduce()和filter()简化javascript嵌套数组?

javascript - window.outerWidth 和 window.outerHeight 不适用于 iOS

javascript - 为什么我的 jQuery 调整大小触发不一致?

javascript - 如何显示从 Zebra Datepicker 中选择的两个日期中选择的天数?

PHP多维数组通过key删除元素