[英]modifying dictionary keys in Javascript
我正在嘗試為n = 3動態創建一個n暗對象finalObj
children = { 'value1' : 'some1' , 'value2' : 'some2' , 'value3' :'some3' }
item = { 'key1' : 'value1' , 'key2':'value2' , 'key3':'value3' }
基本上,生成的對象將如下所示。
finalObj = { parent : { 'some1' : { 'some2' : { 'some3':{} } } } }
我在下面創建一個n深度對象。
var parent ={}
var finalObj
function makechildren( children, depth ){
if (depth>0){
makechildren({children}, depth-1);
}
else
{ finalObj=children
console.log('finalObj',finalObj)
}
return finalObj
}
Promise.resolve(makechildren(parent,4))
.then(function(resp){
console.log("resp is",resp);
})
打印:
{ "children": { "children": { "children": { "children": {} } } } }
現在,如何轉
parent.children.children.children
同
item ={'key1':'value1','key2':'value2','key3':'value3'}
成
parent.children[ item['key1']].children[ item['key2']].children[ item['key3']]
這本質上是
parent.children['value1'].children['value2'].children['value3']....
我嘗試制作原始字典的副本,並使用循環更改鍵,然后將每個parent.children [item ['key1']]分配給多維字典的其余部分,但並沒有走得太遠。
parent1 = JSON.parse(JSON.stringify(parent))
for (i in Object.keys(parent))
{
parent1[ item['key'+i] ] = parent.children
}
但是,iam停留在此如何完成此操作。 任何想法?
循環遍歷item
的值,使用每個值從children
獲取相應的值,並將其用作新對象的屬性。 要創建嵌套對象,請使用變量將對象保持在當前深度,您可以在循環中每次更新該深度。
children = { 'value1' : 'some1' , 'value2' : 'some2' , 'value3' :'some3' }; item = { 'key1' : 'value1' , 'key2':'value2' , 'key3':'value3' }; finalObj = { parent: {} }; var cur = finalObj.parent; Object.values(item).forEach(val => { cur[children[val]] = {}; cur = cur[children[val]]; }); console.log(JSON.stringify(finalObj));
請注意,無法保證從對象讀取的項目順序,因此無法保證這將以所需的順序嵌套事物。 如果要保留訂單,則應使用數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.