编程语言
首页 > 编程语言> > javascript – 如何使用递归,休息/扩展运算符和解构来将数组中的这些数字加倍?

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

作者:互联网

我最近完成了一个JavaScript挑战,要求返回一个新数组,其中初始数组的所有值都加倍.

const numbers = [1, 2, 3];

function double() {

}

除了我要包括一些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;

}

另一个要求是不使用任何数组助手方法(map,reuce等),所以我没有使用map(),而是使用for循环.但是,我无法绕过实现解构或休息/传播操作符,我认为我很清楚的概念,从不提及递归.

解决方法:

这是一种可能的实现 – 解构double参数,取出数组中的第一个数字,并使用rest语法将其余数字放入另一个数组中.然后,将数组的其余部分加倍,并将其扩展到一个新的(返回的)数组,由第一个数字2引导:

const numbers = [1, 2, 3];

function double([firstNum, ...rest]) {
  const restDoubled = rest.length ? double(rest) : [];
  return [firstNum * 2, ...restDoubled];
}

console.log(double(numbers));

标签:destructuring,javascript,ecmascript-6,recursion
来源: https://codeday.me/bug/20190827/1745677.html