如何使用递归,休息/扩展运算符和解构来将数组中的这些数字加倍?

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循环.但是,我无法绕过实现解构或休息/传播操作符,我认为我很清楚的概念,从不提及递归.

Cer*_*nce 5

这是一种可能的实现 - 解构参数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)