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];