[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/concat [Back]  [Original]

Array.prototype.concat() - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

Array.prototype.concat()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since julho de 2015.

O mtodo concat() utilizado para mesclar dois ou mais arrays. Esse mtodo no altera os arrays existentes, mas, em vez disso, retorna um novo array.

In this article

Experimente

const array1 = ["a", "b", "c"];
const array2 = ["d", "e", "f"];
const array3 = array1.concat(array2);

console.log(array3);
// Expected output: Array ["a", "b", "c", "d", "e", "f"]

Sintaxe

js
concat()
concat(valor0)
concat(valor0, valor1)
concat(valor1, valor2, /*...,*/ valorN)

Parmetros

valorN Optional

Arrays e/ou valores para concatenar em um novo array. Se todos os parmetros valorN forem omitidos, concat retorna uma shallow copy de todos os arrays existentes do qual chamado. Veja a descrio abaixo para mais detalhes.

Valor de retorno

Uma nova instncia Array.

Descrio

O mtodo concat cria um novo array. O array ir primeiro ser preenchido pelos elementos no objeto no qual chamado. Ento, para cada argumento, seu valor ser concatenado no array para objetos normais ou primitivos, o prprio argumento se tornar um elemento do array final; para arrays ou objetos tipo array com a propriedade Symbol.isConcatSpreadable definida como um valor verdadeiro, cada elemento do argumento ser adicionado independentemente ao array final. O mtodo concat no recursa em argumentos de array aninhados.

O mtodo concat() um copying method. Ele no altera this ou quaquer um dos arrays fornecidos como argumentos, mas, em vez disso retorna uma shallow copy que contm os mesmos elementos dos arrays originais.

O mtodo concat() preserva slots vazios se qualquer um dos arrays de origem for sparse.

O mtodo concat() genrico. O valor this tratado da mesma forma como os outros argumentos (exceto que ser convertido em um objeto primeiro), o que significa que objetos simples sero anexados diretamente ao array resultante, enquanto objetos do tipo array com verdadeiro @@isConcatSpreadable sero propagados no array resultante.

Exemplos

Concatenando dois arrays

O cdigo a seguir concatena dois arrays:

js
const letras = ["a", "b", "c"];
const numeros = [1, 2, 3];

const alfaNumerico = letras.concat(numeros);
console.log(alfaNumerico);
// resulta em ['a', 'b', 'c', 1, 2, 3]

Concatenando trs arrays

O cdigo a seguir concatena trs arrays:

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

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

console.log(numeros);
// resulta em [1, 2, 3, 4, 5, 6, 7, 8, 9]

Concatenando valores em um array

O cdigo a seguir concatena trs valores em um array:

js
const letras = ["a", "b", "c"];

const alfaNumerico = letras.concat(1, [2, 3]);

console.log(alfaNumerico);
// resulta em ['a', 'b', 'c' , 1, 2, 3]

Concatenando arrays aninhados

O cdigo a seguir concatena arrays aninhados e demonstra a reteno de referncia:

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

const numeros = num1.concat(num2);

console.log(numeros);
// resulta em [[1], 2, [3]]

//modifica o primeiro elemento do num1
num1[0].push(4);

console.log(numeros);
// resulta em [[1, 4], 2, [3]]

Concatenanto objetos tipo array com Symbol.isConcatSpreadable

concat no trata todos os objetos tipo array como arrays por padro somente se Symbol.isConcatSpreadable estiver definido como um valor verdadeiro (P.ex. true)

js
const obj1 = { 0: 1, 1: 2, 2: 3, length: 3 };
const obj2 = { 0: 1, 1: 2, 2: 3, length: 3, [Symbol.isConcatSpreadable]: true };
console.log([0].concat(obj1, obj2));
// resulta em [ 0, { '0': 1, '1': 2, '2': 3, length: 3 }, 1, 2, 3 ]

Usando concat() em arrays sparse

Se qualquer uma das arrays sparse, a array resultante ser tambm sparse:

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

Chamando concat() em objetos no array

Se o valor this no for um array, ele ser convertido em um objeto e ento tratado da mesma forma que os argumentos para concat(). Nesse caso o valor de retorno sempre um novo array simples.

js
console.log(Array.prototype.concat.call({}, 1, 2, 3)); // [{}, 1, 2, 3]
console.log(Array.prototype.concat.call(1, 2, 3)); // [ [Number: 1], 2, 3 ]
const arrayLike = { [Symbol.isConcatSpreadable]: true, length: 2, 0: 1, 1: 2 };
console.log(Array.prototype.concat.call(arrayLike, 3, 4)); // [1, 2, 3, 4]

Especificao

Specification
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.concat

Compatibilidade com navegadores

Veja tambm


Web Proxy Viewer  |  New URL  |  Original Page