JavaScript: преобразование плоского массива в древовидную структуру без использования `eval` - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть такой массив ["aaa","aaa","bbb","ccc"].

Мне нужно преобразовать его в такую ​​форму:

{ "aaa" :
  { "aaa" :
    { "bbb" :
      { "ccc" : 1 }
    }
  }
}

Я знаю, eval может сделать трюк,Однако есть ли какое-нибудь красивое решение?

Спасибо за чтение моего поста.

1 Ответ

0 голосов
/ 21 декабря 2018

Использование Array.reduceRight().На каждой итерации возвращайте объект с предыдущим результатом в качестве значения текущего свойства:

const arr = ["aaa","aaa","bbb","ccc"]

const result = arr.reduceRight((r, s) => ({ [s]: r }), 1)

console.log(result)
...