without variable objects concatenate array javascript json

javascript - variable - Objetos Concat JSON



javascript merge arrays of objects (10)

Tengo dos objetos JSON con la misma estructura y quiero combinarlos usando Javascript. ¿Hay una forma fácil de hacer esto?


La forma real es usar JS Object.assign.

Object.assign(target, ...sources)

Enlace MDN

Existe otro operador de propagación de objetos que se propone para ES7 y se puede usar con los complementos de Babel.

Obj = {...sourceObj1, ...sourceObj2}


Puede usar extend método jquery extend .

Ejemplo:

o1 = {"foo":"bar", "data":{"id":"1"}}; o2 = {"x":"y"}; sum = $.extend(o1, o2);

Resultado:

sum = {"foo":"bar", "data":{"id":"1"}, "x":"y"}


Puede usar el método Object.assign () . El método Object.assign () se usa para copiar los valores de todas las propiedades enumerables de uno o más objetos de origen a un objeto de destino. Devolverá el objeto de destino. [1]

var o1 = { a: 1 }, o2 = { b: 2 }, o3 = { c: 3 }; var obj = Object.assign(o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 }


Según su descripción en los comentarios, simplemente haría una concat de matriz:

var jsonArray1 = [{''name'': "doug", ''id'':5}, {''name'': "dofug", ''id'':23}]; var jsonArray2 = [{''name'': "goud", ''id'':1}, {''name'': "doaaug", ''id'':52}]; jsonArray1 = jsonArray1.concat(jsonArray2); // jsonArray1 = [{''name'': "doug", ''id'':5}, {''name'': "dofug", ''id'':23}, //{''name'': "goud", ''id'':1}, {''name'': "doaaug", ''id'':52}];


Si prefieres copiar las propiedades:

var json1 = { value1: ''1'', value2: ''2'' }; var json2 = { value2: ''4'', value3: ''3'' }; function jsonConcat(o1, o2) { for (var key in o2) { o1[key] = o2[key]; } return o1; } var output = {}; output = jsonConcat(output, json1); output = jsonContat(output, json2);

Salida = {valor1: ''1'', valor2: ''4'', valor3: ''3''};


Solo Javascript =)

var objA = { ''a'': 1, ''b'': 2} var objB = { ''x'': 3, ''y'': 5} objA.nameNewObj = objB


Solo prueba esto, usando guion bajo

var json1 = [{ value1: ''1'', value2: ''2'' },{ value1: ''3'', value2: ''4'' }]; var json2 = [{ value3: ''a'', value4: ''b'' },{ value3: ''c'', value4: ''d'' }]; var resultArray = []; json1.forEach(function(obj, index){ resultArray.push(_.extend(obj, json2[index])); }); console.log("Result Array", resultArray);

Resultado


Una solución es usar una lista / matriz:

var first_json = {"name":"joe", "age":27}; var second_json = {"name":"james", "age":32}; var jsons = new Array(); jsons.push(first_json); jsons.push(second_json);

Resultado

jsons = [ {"name":"joe", "age":27}, {"name":"james", "age":32} ]


de acuerdo, puedes hacer esto en una línea de código. necesitarás json2.js para esto (probablemente ya lo tengas). los dos objetos json aquí son cadenas sin analizar.

json1 = ''[{"foo":"bar"},{"bar":"foo"},{"name":"craig"}]''; json2 = ''[{"foo":"baz"},{"bar":"fob"},{"name":"george"}]''; concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2)));


var baseArrayOfJsonObjects = [{},{}]; for (var i=0; i<arrayOfJsonObjectsFromAjax.length; i++) { baseArrayOfJsonObjects.push(arrayOfJsonObjectsFromAjax[i]); }