简体   繁体   English

如何从具有相同键的数组创建嵌套对象(javascript)

[英]how to create nested object from an array with same key (javascript)

arr = ["sadik", "arif", "rahman"]

I want to create a nested object with the same key but different value like:我想创建一个具有相同键但不同值的嵌套对象,例如:

{ 
  subcategory: {
    name: sadik
    subcategory: {
      name: arif
      subcategory: {
        name: rahman
      }
    }
  }
}

my code:我的代码:

let arr = ['sadik', 'arif', 'babor']
let obj = {}
arr.forEach((elem) => {
  let a = {}
  a["subcategory"] = {name:elem}
  Object.assign(obj, a)
})

i get only last value:我只得到最后一个值:

{
subcategory: {
   name:"babor"
  }
}

Your code did not work because you were replacing your "subcategory" key value in each iteration.您的代码不起作用,因为您在每次迭代中都替换了“子类别”键值。 You have change the reference object to the next nested level each time to get the expected output, see the working snippet below:您每次都将引用对象更改为下一个嵌套级别以获得预期的输出,请参阅下面的工作片段:

 const arr = ['level-1', 'level-2', 'level-3'] const obj = {} let refObj = obj; arr.forEach( ele => { refObj = refObj['subcategory'] || refObj; refObj['subcategory'] = { 'name': ele}; }) console.log('output', obj);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM