function pouet(liste) { if (liste.length === 0) return [] const result = [] /** * @type string | Array */ const item = liste.pop() if (typeof item === 'object') { result.push(...pouet(item)) } else { // typeof item === 'string' if (item.charCodeAt(0) % 2 === 1) { // item est pair result.push(item) } } result.push(...pouet(liste)) return result } (async () => { const entree = ['a', ['b', 'c', 'd', ['e', ['f'], 'g'], 'h', 'i', 'j'], 'k', 'l', 'm', ['n', 'o', 'p'], 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] console.log( pouet(entree) ) })()