Mesclar dois arrays json / javascript em um array

Eu tenho dois arrays json como

var json1 = [{id:1, name: 'xxx' ...}] var json2 = [{id:2, name: 'xyz' ...}] 

Eu quero que eles se mesclem em matrizes únicas

 var finalObj = [{id:1, name: 'xxx' ...},{id:2, name: 'xyz' ...}] 

Saudações

   

Você quer o método concat .

 var finalObj = json1.concat(json2); 

Na primeira aparição, a palavra “merg” leva a pensar que você precisa usar .extend , que é a maneira correta de jQuery de “mesclar” objects JSON. No entanto, $.extend(true, {}, json1, json2); fará com que todos os valores que compartilham o mesmo nome de chave sejam substituídos pelos mais recentes fornecidos nos parâmetros. Como a revisão da sua pergunta mostra, isso é indesejado.

O que você procura é uma function javascript simples conhecida como .concat . O que funcionaria como:

 var finalObj = json1.concat(json2); 

Embora esta não seja uma function nativa do jQuery, você pode facilmente adicioná-la à biblioteca jQuery para uso futuro simples, como segue:

 ;(function($) { if (!$.concat) { $.extend({ concat: function() { return Array.prototype.concat.apply([], arguments); } }); } })(jQuery); 

E, em seguida, lembre-se como desejado:

 var finalObj = $.concat(json1, json2); 

Você também pode usá-lo para vários objects de matriz desse tipo com um similar:

 var finalObj = $.concat(json1, json2, json3, json4, json5, ....); 

E se você realmente quer isso estilo jQuery e muito curto e doce (aka minified)

 ;(function(a){a.concat||a.extend({concat:function(){return Array.prototype.concat.apply([],arguments);}})})(jQuery); 
 ;(function($){$.concat||$.extend({concat:function(){return Array.prototype.concat.apply([],arguments);}})})(jQuery); $(function() { var json1 = [{id:1, name: 'xxx'}], json2 = [{id:2, name: 'xyz'}], json3 = [{id:3, name: 'xyy'}], json4 = [{id:4, name: 'xzy'}], json5 = [{id:5, name: 'zxy'}]; console.log(Array(10).join('-')+'(json1, json2, json3)'+Array(10).join('-')); console.log($.concat(json1, json2, json3)); console.log(Array(10).join('-')+'(json1, json2, json3, json4, json5)'+Array(10).join('-')); console.log($.concat(json1, json2, json3, json4, json5)); console.log(Array(10).join('-')+'(json4, json1, json2, json5)'+Array(10).join('-')); console.log($.concat(json4, json1, json2, json5)); }); 
 center { padding: 3em; } 
  
See Console Log

Você poderia tentar mesclar

 var finalObj = $.merge(json1, json2); 

Desde que você está usando o jQuery. Como sobre o método jQuery.extend ()?

http://api.jquery.com/jQuery.extend/

Descrição: Mesclar o conteúdo de dois ou mais objects juntos no primeiro object.

Talvez você possa usar a syntax de array do javascript:

 var finalObj =[json1 , json2] 

Você pode fazer isso usando o novo recurso Es 6:

 var json1 = [{id:1, name: 'xxx' , ocupation : 'Doctor' }]; var json2 = [{id:2, name: 'xyz' ,ocupation : 'SE'}]; var combineJsonArray = [...json1 , ...json2]; //output should like this [ { id: 1, name: 'xxx', ocupation: 'Doctor' }, { id: 2, name: 'xyz', ocupation: 'SE' } ] 

Ou você pode colocar uma string extra ou qualquer coisa entre duas matrizes json:

 var json3 = [...json1 ,"test", ...json2]; // output should like this : [ { id: 1, name: 'xxx', ocupation: 'Doctor' }, 'test', { id: 2, name: 'xyz', ocupation: 'SE' } ] 

Você pode conseguir isso usando a function Lodash _.merge .

 var json1 = [{id:1, name: 'xxx'}]; var json2 = [{id:2, name: 'xyz'}]; var merged = _.merge(_.keyBy(json1, 'id'), _.keyBy(json2, 'id')); var finalObj = _.values(merged); console.log(finalObj); 
  

Você pode usar o novo operador js spread usando es6:

 var json1 = [{id:1, name: 'xxx'}] var json2 = [{id:2, name: 'xyz'}] var finalObj = [...json1, ...json2] console.log(finalObj) 

Experimente o código abaixo, usando o método de extensão jQuery:

 var json1 = {"name":"ramesh","age":"12"}; var json2 = {"member":"true"}; document.write(JSON.stringify($.extend(true,{},json1,json2))) 
 var json1=["Chennai","Bangalore"]; var json2=["TamilNadu","Karanataka"]; finaljson=json1.concat(json2);