Помогите решить задачу с массивом и вложеностями
Нужно написать функцию которая принимет масив целих чисел и возвращает массив вложенних массивов где грубина вложености равна его значению, пример - [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]]]]]