window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = finestra if (w.LeadBooster) { console.warn('LeadBooster esiste già') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Tre punti utili - il resto e la diffusione in JavaScript - The Codest
The Codest
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Industrie
    • Fintech e banche
    • E-commerce
    • Adtech
    • Tecnologia della salute
    • Produzione
    • Logistica
    • Automotive
    • IOT
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
  • Chi siamo
  • Servizi
    • Sviluppo di software
      • Sviluppo Frontend
      • Sviluppo backend
    • Staff Augmentation
      • Sviluppatori Frontend
      • Sviluppatori backend
      • Ingegneri dei dati
      • Ingegneri del cloud
      • Ingegneri QA
      • Altro
    • Consulenza
      • Audit e consulenza
  • Valore per
    • CEO
    • CTO
    • Responsabile della consegna
  • Il nostro team
  • Case Studies
  • Sapere come
    • Blog
    • Incontri
    • Webinar
    • Risorse
Carriera Contattate
Freccia indietro TORNA INDIETRO
2019-11-25
Sviluppo di software

Tre punti utili: il resto e lo spread in JavaScript

Lukasz Kolko

ECMAScript 2015 ci ha portato molte novità, che si sono tradotte in un gran numero di miglioramenti. Oggi daremo un'occhiata più da vicino a due caratteristiche che rendono la vita più facile. Ecco i paremetri di riposo e la sintassi di diffusione.

Parametri di riposo

La sintassi del resto ci permette di rappresentare un numero indefinito di argomenti come un array. Osserviamo una funzione che somma tutti gli argomenti passati.

const sum = (...args) => args.reduce((prev, current) => prev + current);

console.log(sum(1, 2)); // 3
console.log(sum(1, 2, 3)); // 6

Sintassi di diffusione

L'operatore spread ci consente di espandere gli oggetti iterabili in singoli elementi. Questa funzionalità è opposta a quella ottenuta con i parametri restanti. Può essere applicato a tutte le iterabili, come array, oggetti, set, mappe, ecc.

const somma = (x, y, z) => x + y + z;
numeri costanti = [1, 2, 3];

console.log(somma(...numeri)); // 6

Tre punti in casi d'uso reali

Copia di un array

La sintassi di spread si spinge effettivamente a un livello superiore durante la copia di un array. Un livello significa che viene copiato il primo livello di riferimenti.

const array0 = [1, [2, 3]];
const array1 = [...array0];

console.log(array1); // [1, [2, 3]]

Creare un array di elementi unici

Creare un set che memorizzi solo elementi unici e convertirlo in un array.

const array = [1, 1, 2, 3];
const uniqueElements = [...new Set(array)];

console.log(uniqueElements); // [1, 2, 3]

Concatenare gli array

const array0 = [1, 2];
const array1 = [3, 4];
const concated = [...array0, ...array1];

console.log(concated); // [1, 2, 3, 4]

Affettare un array

const [firstElement, ...newArray] = [1, 2, 3, 4];

console.log(firstElement); // 1
console.log(newArray); // [2, 3, 4]

Possiamo anche rimuovere n primi elementi con la virgola.

const [, , , ...newArray] = [1, 2, 3, 4];

console.log(newArray); // [4]

Inserimento di un array all'inizio di un altro array

const array0 = [4, 5, 6];
const array1 = [1, 2, 3];
const newArray = [...array1, ...array0];

console.log(newArray); // [ 1, 2, 3, 4, 5, 6 ]

Generare un array di numeri da 0 a n

const array = [...Array(10)].map((_, i) => i);

console.log(array); // [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

Destrutturazione di un oggetto

const { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };

console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }

Creare una copia di un oggetto

let person = {
  nome: 'John',
  età: 25,
  portafoglio: {
    somma: 500,
    valuta: 'USD'
  }
};
let personCopy = { ...person };

console.log(personCopy);
// {
// nome: 'John',
// età: 25,
// portafoglio: {
// somma: 500,
// valuta: 'USD'
// }
// }

Si noti che la copia dell'oggetto che viene creata è un nuovo oggetto con tutte le proprietà dell'oggetto originale, ma nessuna delle sue informazioni prototipali.

persona.età = 20;

console.log(persona.età); // 20
console.log(personCopy.age); // 25

Si noti che la sintassi diffusa crea una copia "superficiale" dell'oggetto, quindi la proprietà "portafoglio" sarà copiata solo come riferimento al sotto-oggetto originale. Per la clonazione profonda si può usare l'approccio JSON stringify/parse o il metodo 'cloneDeep' fornito da Lodash, a seconda della complessità dell'oggetto. In alcuni casi anche questo metodo può essere utile:

let personCopy = { ...persona, portafoglio = {...persona.portafoglio}}; 

Aggiungere condizionatamente proprietà agli oggetti

Possiamo aggiungere in modo condizionato le proprietà a un nuovo oggetto che stiamo creando, utilizzando l'operatore di diffusione e la valutazione del cortocircuito.

const colori = {
  rosso: '#ff0000',
  verde: '#00ff00',
  blu: '#0000ff'
};
const nero = {
  nero: '#000000'
};

let extraBlack = false;
let conditionalMerge = {
  ...colori,
  ...(extraBlack ? black : {})
};

console.log(conditionalMerge);
// {
// rosso: '#ff0000',
// verde: '#00ff00',
// blu: '#0000ff'
// }

extraBlack = true;
conditionalMerge = {
  ...colori,
  ...(extraBlack ? black : {})
};

console.log(conditionalMerge);
// {
// rosso: '#ff0000',
// verde: '#00ff00',
// blu: '#0000ff'
// nero: '#000000'
// }

Dividere una stringa in caratteri

Questo è simile alla chiamata del metodo split con una stringa vuota come parametro.

const split = [...'qwerty'];
console.log(split); // [ 'q', 'w', 'e', 'r', 't', 'y' ]

Consulenza per lo sviluppo di prodotti digitali

Per saperne di più:

3 sfide comuni dello sviluppo di prodotti software per le startup

Il miglior tipo di progetti per Java

Come non uccidere un progetto con cattive pratiche di codifica?

Articoli correlati

Sviluppo di software

Costruire applicazioni web a prova di futuro: le intuizioni del team di esperti di The Codest

Scoprite come The Codest eccelle nella creazione di applicazioni web scalabili e interattive con tecnologie all'avanguardia, offrendo esperienze utente senza soluzione di continuità su tutte le piattaforme. Scoprite come la nostra esperienza favorisce la trasformazione digitale e il business...

IL CANCRO
Sviluppo di software

Le 10 principali aziende di sviluppo software con sede in Lettonia

Scoprite le migliori aziende di sviluppo software della Lettonia e le loro soluzioni innovative nel nostro ultimo articolo. Scoprite come questi leader tecnologici possono aiutarvi a migliorare la vostra attività.

thecodest
Soluzioni per aziende e scaleup

Essenziali di sviluppo software Java: Guida all'outsourcing di successo

Esplorate questa guida essenziale sullo sviluppo di software Java con successo outsourcing per migliorare l'efficienza, accedere alle competenze e guidare il successo del progetto con The Codest.

thecodest
Sviluppo di software

La guida definitiva all'outsourcing in Polonia

L'aumento di outsourcing in Polonia è guidato dai progressi economici, educativi e tecnologici, che favoriscono la crescita dell'IT e un clima favorevole alle imprese.

IlCodesto
Soluzioni per aziende e scaleup

Guida completa agli strumenti e alle tecniche di audit IT

Gli audit IT garantiscono sistemi sicuri, efficienti e conformi. Per saperne di più sulla loro importanza, leggete l'articolo completo.

The Codest
Jakub Jakubowicz CTO e cofondatore

Iscrivetevi alla nostra knowledge base e rimanete aggiornati sulle competenze del settore IT.

    Chi siamo

    The Codest - Società internazionale di sviluppo software con centri tecnologici in Polonia.

    Regno Unito - Sede centrale

    • Ufficio 303B, 182-184 High Street North E6 2JA
      Londra, Inghilterra

    Polonia - Poli tecnologici locali

    • Parco uffici Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Ambasciata del cervello, Konstruktorska
      11, 02-673 Varsavia, Polonia

      The Codest

    • Casa
    • Chi siamo
    • Servizi
    • Case Studies
    • Sapere come
    • Carriera
    • Dizionario

      Servizi

    • Consulenza
    • Sviluppo di software
    • Sviluppo backend
    • Sviluppo Frontend
    • Staff Augmentation
    • Sviluppatori backend
    • Ingegneri del cloud
    • Ingegneri dei dati
    • Altro
    • Ingegneri QA

      Risorse

    • Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo di software
    • Dagli Stati Uniti all'Europa: Perché le startup americane decidono di trasferirsi in Europa
    • Confronto tra gli hub di sviluppo Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filippine), Eurasia (Turchia)
    • Quali sono le principali sfide di CTO e CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condizioni di utilizzo del sito web

    Copyright © 2025 di The Codest. Tutti i diritti riservati.

    it_ITItalian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek it_ITItalian