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

时间:2020-02-18 16:48:58

标签: javascript arrays object

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

我想创建一个具有相同键但值不同的嵌套对象,例如:

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

我的代码:

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

我只得到最后一个值:

{
subcategory: {
   name:"babor"
  }
}

1 个答案:

答案 0 :(得分:0)

您的代码无效,因为您在每次迭代中都替换了“子类别”键值。每次都将参考对象更改为下一个嵌套级别,以获取预期的输出,请参见下面的工作片段:

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);