Javascript 如何使用括号表示法在对象文字上创建嵌套属性?

Javascript 如何使用括号表示法在对象文字上创建嵌套属性?,javascript,Javascript,下面的方法很有效,但我试图找到一种方法来省略arrayOfObjects[1]['testParent']={}位,假设您想向一个嵌套了10层的空对象添加一个值,您必须首先用一个空的{}来初始化每个层,我正在尝试找到一个解决方法 让arrayOfObjects=[ {}, {}, {}, ] arrayOfObjects[1]['testParent']={} arrayOfObjects[1]['testParent']['testKey']='testValue' //有没有一种方法可以在

下面的方法很有效,但我试图找到一种方法来省略
arrayOfObjects[1]['testParent']={}
位,假设您想向一个嵌套了10层的空对象添加一个值,您必须首先用一个空的
{}
来初始化每个层,我正在尝试找到一个解决方法

让arrayOfObjects=[
{},
{},
{},
]
arrayOfObjects[1]['testParent']={}
arrayOfObjects[1]['testParent']['testKey']='testValue'
//有没有一种方法可以在一行中完成上述操作,而不必在第7行用空对象初始化testParent?
console.log(arrayOfObjects)
事实上,您还可以通过以下方式避免使用数组索引器:

 arrayOfObjects = [ 
    {},
    {
      testParent: {
        testKey: 'testValue'
      }
    },
    {}
 ];
事实上,您还可以通过以下方式避免使用数组索引器:

 arrayOfObjects = [ 
    {},
    {
      testParent: {
        testKey: 'testValue'
      }
    },
    {}
 ];

您可以使用接受字符串和值并设置嵌套属性的
reduce
为此创建自定义方法

让arr=[{},{},{}]
功能集(对象、键、值){
键。拆分(“.”)。减少((r,e,i,a)=>{
返回r[e]| |(r[e]=a[i+1]?{}:value)
},obj);
}
set(arr,“0.testParent.testKey”,“testValue”)
集合(arr,“2.a.b.f”,“值”)
集合(arr,“2.a.b.c”,“值”)

console.log(arr)
您可以为此创建自定义方法,使用
reduce
获取字符串和值并设置嵌套属性

让arr=[{},{},{}]
功能集(对象、键、值){
键。拆分(“.”)。减少((r,e,i,a)=>{
返回r[e]| |(r[e]=a[i+1]?{}:value)
},obj);
}
set(arr,“0.testParent.testKey”,“testValue”)
集合(arr,“2.a.b.f”,“值”)
集合(arr,“2.a.b.c”,“值”)

console.log(arr)
也许一个小助手可以帮助您省略括号:

const $ = (obj, key, ...keys) => key != undefined ? $(obj[key] || (obj[key] = {}), ...keys) : obj;
可用作:

const arr = [];
$(arr, 1, "testParent").testKey = "testValue";

也许一个小助手可以帮助您省略括号:

const $ = (obj, key, ...keys) => key != undefined ? $(obj[key] || (obj[key] = {}), ...keys) : obj;
可用作:

const arr = [];
$(arr, 1, "testParent").testKey = "testValue";

arrayOfObjects[1]['testParent']={'testKey':'testValue'}
,像这样?
arrayOfObjects[1]['testParent']={'testKey':'testValue'}
,像这样?这不是JSON。@lonesomeday:我想是因为它缺少所有的引号吧?我已经删除了对JSON的引用。否,因为JSON是一种用于数据序列化的格式。这只是标准的Javascript对象语法。在任何情况下,向下投票都被删除。这似乎是一种任意嵌套的方式,保持简单,等等。
arrayOfObjects[1]={testParent:{testParent:{testKey:'testValue'}}}
这不是JSON。@lonesomeday:我想是因为它缺少所有的引号吧?我已经删除了对JSON的引用。否,因为JSON是一种用于数据序列化的格式。这只是标准的Javascript对象语法。在任何情况下,向下投票都被删除。这似乎是实现任意嵌套的方法,保持简单,等等。
arrayOfObjects[1]={testParent:{testParent:{testKey:'testValue'}}}