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)
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 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 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]);
}