У меня есть вложенный массив, как показано ниже
var x=[1,2,[3,4,[5,6,[7,8,[9,10]]]]]
Я хочу выполнить некоторую операцию в массиве, предположим, умножение каждого элемента с 2 , а затем результатбудет выглядеть следующим образом:
[2,4,[6,8,[10,12,[14,16,[18,20]]]]]
Пока что я сделал следующее:
function nestedArrayOperation(arr){
var p=[];
arr.forEach(function(item,index){
if(Array.isArray(item)){
p.push(nestedArrayOperation(item))
return
}
p.push(item*2);//multiply by 2
return
});
return p;
}
function nestedArrayOperation(arr){
var p=[];
arr.forEach(function(item,index){
if(Array.isArray(item)){
p.push(nestedArrayOperation(item))
return
}
p.push(item*2);//Multiply by 2
return
});
return p;
}
var x=[1,2,[3,4,[5,6,[7,8,[9,10]]]]]
console.log(nestedArrayOperation(x))
.as-console-row-code{white-space: nowrap!important;}
Здесь я выполняю операцию внутри жестко закодированной функции, я хочу сделать Generic nestedArrayOperation , где операция будет решаться пользователемкак карта, уменьшить и т. д. функция работает.
Как и в функции map
, мы можем выполнить любую операцию [1,2,3,4] .map (x => x ** 2) // она вернет [1,4,9,16] или [1,2,3,4] .map (x => x * 2) // он вернет [2,4,6,8]
Пример примерно так:
arr.nestedArrayOperation(x=>x*2)
//or
arr.nestedArrayOperation(x=>x+5)
Помогите, пожалуйста, создать универсальный
Спасибо