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'}}}