Вы можете сделать это с помощью reduceRight()
, что исключает необходимость запрашивать результат, чтобы получить самое глубокое значение, потому что оно начинается с самого глубокого элемента и работает.Возвращаемое значение будет самым верхним элементом:
var arr = ["ul", "li", "strong", "em", "u"]
let el = arr.reduceRight((el, n) => {
let d = document.createElement(n)
d.appendChild(el)
return d
}, document.createTextNode("Text Here"))
document.getElementById('container').appendChild(el)
<div id = "container"></div>
Также изящно происходит сбой с пустым массивом:
var arr = []
let el = arr.reduceRight((el, n) => {
let d = document.createElement(n)
d.appendChild(el)
return d
}, document.createTextNode("Text Here"))
document.getElementById('container').appendChild(el)
<div id = "container"></div>