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