Dan*_*iel 3 javascript recursion destructuring ecmascript-6
我最近完成了一个JavaScript挑战,要求返回一个新数组,其中初始数组的所有值都加倍.
const numbers = [1, 2, 3];
function double() {
}
Run Code Online (Sandbox Code Playgroud)
除了我要包括一些ES6主题的解构和休息/传播运算符以及递归.好吧,我尽可能地完成了解决方案.这是我的解决方案:
const numbers = [1, 2, 3];
function double(arr){
const doubledNumbers = [];
for (var i = 0; i < arr.length; i ++){
const dubba = arr[i];
const bubba = dubba * 2;
doubledNumbers.push(bubba);
}
return doubledNumbers;
}
Run Code Online (Sandbox Code Playgroud)
另一个要求是不使用任何数组助手方法(map,reuce等),所以我没有使用map(),而是使用for循环.但是,我无法绕过实现解构或休息/传播操作符,我认为我很清楚的概念,从不提及递归.
这是一种可能的实现 - 解构参数double,取出数组中的第一个数字,并使用rest语法将其余数字放入另一个数组中.然后,double数组的其余部分,并将其传播到一个新的(返回的)数组,由第一个数字2引导:
const numbers = [1, 2, 3];
function double([firstNum, ...rest]) {
const restDoubled = rest.length ? double(rest) : [];
return [firstNum * 2, ...restDoubled];
}
console.log(double(numbers));Run Code Online (Sandbox Code Playgroud)