как создать вложенный объект из массива с тем же ключом (javascript) - PullRequest
0 голосов
/ 18 февраля 2020

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

i получить только последнее значение:

{
subcategory: {
   name:"babor"
  }
}

1 Ответ

0 голосов
/ 18 февраля 2020

Ваш код не работал, потому что вы заменяли значение ключа "подкатегория" на каждой итерации. Вы каждый раз меняете ссылочный объект на следующий вложенный уровень, чтобы получить ожидаемый результат, см. Рабочий фрагмент ниже:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...