Как удвоить эти числа в массиве, используя операторы рекурсии, отдыха / распространения и деструктуризацию? - PullRequest
0 голосов
/ 02 декабря 2018

Недавно я выполнил задание 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 петля.Однако я не мог сосредоточиться на реализации операторов деструктуризации или отдыха / распространения, понятия, которые, как мне казалось, я хорошо знал, не говоря уже о рекурсии.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Зачем использовать рекурсию, когда мы можем сделать это, используя простой код, как показано ниже

numbers = numbers.map(x => 2*x)
0 голосов
/ 02 декабря 2018

Вот одна из возможных реализаций - деструктурировать параметр 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));
...