Помогите решить задачу с массивом и вложеностями

Нужно написать функцию которая принимет масив целих чисел и возвращает массив вложенних массивов где грубина вложености равна его значению, пример - [1, 2, 1, 3, 4] => [[1], [[2]], [1], [[[3]]], [[[[4]]]]] Голову ломаю второй час, помогите пожалуста


Ответы (3 шт):

Автор решения: user447630

Эту задачу можно решить, например, через рекурсию:

const myFunc = (arr) => {
  if (arr.length === 0) return arr;
  return [
    [arr[0]], ...myFunc(arr.slice(1).map(v => [v]))
  ]
}

console.log(JSON.stringify(myFunc([1, 2, 1, 3, 4])))

→ Ссылка
Автор решения: Vadim Sabitov

Попробуйте так:

function go(array) {
let result = [];
array.forEach( function(item) {
let arr = [item];
for( let j = 1; j < item; j++) {
arr = [arr];
}
result.push(arr);
} );  
return result;
}
→ Ссылка
Автор решения: Stanislav Volodarskiy

Array.prototype.map() для обработки элементов массива и построения нового массива.

JSON.stringify() чтобы нормально напечатать.

nested - простой цикл строящий вложенные массивы из одного элемента:

n    nested(n)
0    0
1    [1]
2    [[2]]
3    [[[3]]]
4    [[[[4]]]]
const nested = n => {
    let a = n;
    for (let i = 0; i < n; ++i) {
        a = [a];
    }
    return a;
};

console.log(JSON.stringify([1, 2, 1, 3, 4].map(nested)));
[[1],[[2]],[1],[[[3]]],[[[[4]]]]]
→ Ссылка