2021-02-06 04:42:36 +00:00
---
id: 587d7b89367417b2b2512b48
2021-03-18 11:16:46 -06:00
title: Utiliza el operador de propagación para evaluar los arreglos en el lugar
2021-02-06 04:42:36 +00:00
challengeType: 1
forumTopicId: 301222
dashedName: use-the-spread-operator-to-evaluate-arrays-in-place
---
# --description--
2021-03-18 11:16:46 -06:00
ES6 introduce el < dfn > operador de propagación< / dfn > , que nos permite expandir arreglos y otras expresiones en lugares donde se esperan múltiples parámetros o elementos.
2021-02-06 04:42:36 +00:00
2021-03-18 11:16:46 -06:00
El siguiente código ES5 usa `apply()` para calcular el valor máximo en un arreglo:
2021-02-06 04:42:36 +00:00
```js
var arr = [6, 89, 3, 45];
2021-03-18 11:16:46 -06:00
var maximus = Math.max.apply(null, arr);
2021-02-06 04:42:36 +00:00
```
2021-03-18 11:16:46 -06:00
`maximus` tendrá un valor de `89` .
Tuvimos que usar `Math.max.apply(null, arr)` porque `Math.max(arr)` devuelve `NaN` . `Math.max()` espera argumentos separados por comas, pero no un arreglo. El operador de propagación hace que esta sintaxis sea más fácil de leer y mantener.
2021-02-06 04:42:36 +00:00
```js
const arr = [6, 89, 3, 45];
2021-03-18 11:16:46 -06:00
const maximus = Math.max(...arr);
2021-02-06 04:42:36 +00:00
```
2021-03-18 11:16:46 -06:00
`maximus` tendría un valor de `89` .
`...arr` devuelve un arreglo desempacado. En otras palabras, *propaga* el arreglo. Sin embargo, el operador de propagación sólo funciona en el lugar, como en un argumento de función o en un arreglo literal. El siguiente código no funcionará:
2021-02-06 04:42:36 +00:00
```js
2021-03-18 11:16:46 -06:00
const spreaded = ...arr;
2021-02-06 04:42:36 +00:00
```
# --instructions--
2021-03-18 11:16:46 -06:00
Copia todo el contenido de `arr1` en otro arreglo `arr2` usando el operador de propagación.
2021-02-06 04:42:36 +00:00
# --hints--
2021-03-18 11:16:46 -06:00
`arr2` debe ser una copia correcta de `arr1` .
2021-02-06 04:42:36 +00:00
```js
assert(arr2.every((v, i) => v === arr1[i]) & & arr2.length);
```
2021-03-18 11:16:46 -06:00
El operador de propagación `...` debe utilizarse para duplicar `arr1` .
2021-02-06 04:42:36 +00:00
```js
assert(code.match(/Array\(\s*\.\.\.arr1\s*\)|\[\s*\.\.\.arr1\s*\]/));
```
2021-03-18 11:16:46 -06:00
`arr2` debe permanecer sin cambios cuando `arr1` cambie.
2021-02-06 04:42:36 +00:00
```js
assert((arr1, arr2) => {
arr1.push('JUN');
return arr2.length < arr1.length ;
});
```
# --seed--
## --seed-contents--
```js
const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;
arr2 = []; // Change this line
console.log(arr2);
```
# --solutions--
```js
const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;
arr2 = [...arr1];
```