Files
freeCodeCamp/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/es6/use-the-spread-operator-to-evaluate-arrays-in-place.md

2.0 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7b89367417b2b2512b48 Usar o operador spread para avaliar arrays na hora 1 301222 use-the-spread-operator-to-evaluate-arrays-in-place

--description--

ES6 introduz o operador spread, o qual nos permite expandir arrays e outras expressões no lugar aonde é esperado diversos parâmetros ou elementos.

O código em ES5 abaixo usa apply() para calcular o valor máximo de um array:

var arr = [6, 89, 3, 45];
var maximus = Math.max.apply(null, arr);

maximus teria o valor de 89.

Tivemos de usar Math.max.apply(null, arr) porque Math.max(arr) retorna NaN. Math.max() espera argumentos separados por vírgula, mas não um array. O operador spread torna essa sintaxe muito mais legível e mais fácil de manter.

const arr = [6, 89, 3, 45];
const maximus = Math.max(...arr);

maximus teria o valor de 89.

...arr retorna um array descompactado. Em outras palavras, ele espalha (spreads) o array. No entanto, o operador spread apenas funciona no local, como em um argumento para uma função ou em um array literal. O código a seguir não funcionará:

const spreaded = ...arr;

--instructions--

Copie todo o conteúdo de arr1 em outro array arr2 usando o operador spread.

--hints--

arr2 deve ser uma cópia correta de arr1.

assert(arr2.every((v, i) => v === arr1[i]) && arr2.length);

O operador spread ... deve ser usado para duplicar arr1.

assert(code.match(/Array\(\s*\.\.\.arr1\s*\)|\[\s*\.\.\.arr1\s*\]/));

arr2 deve continuar inalterado quando arr1 é modificado=.

assert((arr1, arr2) => {
  arr1.push('JUN');
  return arr2.length < arr1.length;
});

--seed--

--seed-contents--

const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;

arr2 = [];  // Change this line

console.log(arr2);

--solutions--

const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;

arr2 = [...arr1];