freeCodeCamp/curriculum/challenges/italian/02-javascript-algorithms-an.../es6/use-the-spread-operator-to-...

2.1 KiB

id title challengeType forumTopicId dashedName
587d7b89367417b2b2512b48 Usare l'operatore di propagazione per analizzare gli array in-place 1 301222 use-the-spread-operator-to-evaluate-arrays-in-place

--description--

ES6 introduce l'operatore di propagazione, che ci permette di espandere array ed altre espressioni in posizioni dove sono attesi più parametri o elementi.

Il codice ES5 qui sotto utilizza apply() per calcolare il valore massimo in un array:

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

maximus avrà un valore di 89.

Abbiamo dovuto utilizzare Math.max.apply(null, arr) perché Math.max(arr) restituisce NaN. Math.max() si aspetta argomenti separati da virgole, ma non un array. L'operatore di propagazione rende questa sintassi molto migliore da leggere e mantenere.

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

maximus avrà un valore di 89.

...arr restituisce un array spacchettato. In altre parole, propaga l'array. Tuttavia, l'operatore di propagazione funziona solo sul posto, come argomento di una funzione o in un array letterale (definito usando le parentesi quadre). Il seguente codice non funzionerà:

const spreaded = ...arr;

--instructions--

Copia tutti i contenuti di arr1 in un altro array arr2 usando l'operatore di propagazione.

--hints--

arr2 dovrebbe essere la copia esatta di arr1.

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

L'operatore di propagazione ... dovrebbe essere usato per duplicare arr1.

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

arr2 dovrebbe rimanere invariato quando arr1 viene modificato.

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