Como fazer o merge de dois ou mais objetos em javascript?

Postado em por Wolmir Cezer Garbin em jQuery | 1592 Visualizações
Última atualização em:

Este post mostra como realizar o merge dos valores dos atributos de dois ou mais objetos usando jQuery

Todo mundo tem algo para vender, AnuncieOn.com o melhor site de anúncios grátis de todo o Brasil. ABRIR

Vou deixar duas dicas de como realizar o merge de duas ou mais propriedades de json em javascript. Vamos as soluções:

Solução usando jQuery $.extend()

A primeira solução é usar o $.extend() para fazer o merge.

Cuidado, a mesclagem realizada por $.extend() não é recursiva por padrão. Se uma propriedade do primeiro objeto for ela mesma um objeto ou matriz, ela será completamente sobrescrita por uma propriedade com a mesma chave no segundo objeto.

Veja o exemplo para entender melhor:

var dica = {
	assunto: 'Indefinido',
	view: 10,
	texto: 'Primeira dica de merge de json',
	tags: [{nome: 'merge json', tipo:'js'}]
};
var dica2 = {
	assunto: 'Merge de valores',
	tags: [{usando:'jQuery'}]
};

// Merge
$.extend( dica, dica2 );

console.log( JSON.stringify( dica ) );


O resultado será:

{"assunto":"Merge de valores","view":10,"texto":"Primeira dica de merge de json","tags":[{"usando":"jQuery"}]}

Observe que a tag foi mantido o valor apenas do segundo objeto.

Para mesclar recursivamente e manter os valores contidos no primiro objeto e adicionar as do segundo objeto, podemos adicionar como primeiro parâmetro no extend o valor true, veja:

var dica = {
	assunto: 'Indefinido',
	view: 10,
	texto: 'Primeira dica de merge de json',
	tags: [{nome: 'merge json', tipo:'js'}]
};
var dica2 = {
	assunto: 'Merge de valores',
	tags: [{usando:'jQuery'}]
};

// Merge
$.extend( true, dica, dica2 );

console.log( JSON.stringify( dica ) );

E o resultado será:

{"assunto":"Merge de valores","view":10,"texto":"Primeira dica de merge de json","tags":[{"nome":"merge json","tipo":"js","usando":"jQuery"}]}

Solução usando concat()

Supondo que queira mesclar dois arrays pode fazer o uso do concat(). Veja o exemplo:

var json1 = [{id:1, name: 'João'}];
var json2 = [{id:2, name: 'José'}];

var jsonResult = json1.concat( json2 );

console.log( JSON.stringify( jsonResult ) );

O resultado será:

[{"id":1,"name":"João"},{"id":2,"name":"José"}]

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores


Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar