.concat()

Il metodo .concat() è utilizzato per unire due o più array. Il metodo non cambia gli array originali ma crea un nuovo array.

Sintassi

concat()
concat(value0)
concat(value0, value1)
concat(value0, value1, /* … ,*/ valueN)

Parametri

valueN - Opzionale : Array e/o valori da concatenare in un nuovo array. se tutti i parametri sono omessi, .concat() ritorna una copia superficiale dell'array esistente su cui viene chiamato.

Return

Una nuova istanza di array.

Descrizione

Il metodo .concat() crea un nuovo array. L'array verrà prima popolato dagli elementi nell'oggetto su cui è stato chiamato. Poi per ogni argomento, il suo valore verrà concatenato all'interno dell'array - per normali oggetti o primitivi, gli argomenti stessi diventeranno elementi dell'array finale. Per array o oggetti simili ad array con la proprietà Symbol.isConcatSpreadable impostata su un valore true , ogni elemento dell'argomento verrà aggiunto indipendentemente all'array finale. il metodo .concat() non ricorre in argomenti di array nidificati.

il metodo .concat() è un metodo di copia. Non altera questo o nessuno degli array forniti come argomenti, ma restituisce invece una copia superficiale che contiene gli stessi elementi di quelli degli array originali.

Il metodo .concat() preserve gli slot vuoti se solamente uno deigli array è sparsi. Il metodo è genetico. Il valore this viene trattato allo stesso modo degli altri argomenti (tranne che verrà convertito prima in oggetto) , il che significa che gli oggetti semplice verranno anteposti direttamente all'array risultante, mentre gli oggi simili a array con true @@isConcatSpreadable verranno diffusi nell'array risultante.

Esempi

Concatenare due array

Esempio di concatenazione di due array

const letters = ["a", "b", "c"];
const numbers = [1, 2, 3];

const alphaNumeric = letters.concat(numbers);

console.log(alphaNumeric); // results in ['a', 'b', 'c', 1, 2, 3])

Concatenare tre array

Esempio di concatenazione di tre array

const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
const num3 = [7, 8, 9];

const numbers = num1.concat(num2, num3);

console.log(numbers);
// results in [1, 2, 3, 4, 5, 6, 7, 8, 9]

Concatenare valori

Esempio di concatenazione di valori ad un array.

const letters = ["a", "b", "c"];

const alphaNumeric = letters.concat(1, [2, 3]);

console.log(alphaNumeric); // results in ['a', 'b', 'c', 1, 2, 3]

Array nidificati

Esempio di concatenazione di array nidificati dimostrando la conservazione dei riferimenti.

const num1 = [[1]];
const num2 = [2, [3]];

const numbers = num1.concat(num2);

console.log(numbers); // results in [[1], 2, [3]]

// modify the first element of num1
num1[0].push(4);

console.log(numbers); // results in [[1, 4], 2, [3]]

Concatenazione con Symbol.isConcatSpreadable

.concat() non tratta tutti gli oggetti di tipo array come array per impostazione predefinita, solo se Symbol.isConcatSpreadable è impostato su un valore true.

 

const obj1 = { 0: "pizza", 1: "ananas", 2: "banana", length: 3 };
const obj2 = { 0: "limone", 1: "pera", 2: "arancia", length: 3, [Symbol.isConcatSpreadable]: true };
console.log([0].concat(obj1, obj2)); 

[0, {
  0: "pizza",
  1: "ananas",
  2: "banana",
  length: 3
}, "limone", "pera", "arancia"]

Cancatenare array sparsi

Se solamente uni degli array è sparso, il risultato sarà un array sparso.

console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5]
console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]