簡體   English   中英

修改Javascript中的字典鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM