Deo zbornika Učimo algoritme
Poravnanje niza
Rekurzivni algoritam je posebno zgodan za poravnanje nizova neznane dubine.
Rekurzivno poravnanje niza
function poravnaj(niz) {
const nadovezan = [].concat(...niz)
return nadovezan.some(Array.isArray) ? poravnaj(nadovezan) : nadovezan
}
console.log(poravnaj([1, [2, 3, 4], [5, [[6]]]]))
Rekurzivno poravnanje niza pomoću reduce
const poravnaj = (...argumenti) => argumenti.reduce((niz, el) =>
niz.concat(Array.isArray(el) ? poravnaj(...el) : el)
, [])
console.log(poravnaj(1, [2, 3], 4, 5, [6, [7]]))
console.log(poravnaj('a', ['b', 2], 3, null, [[4], ['c']]))