-2
var state1 = {
"up":{"name":"Uttar Pradesh","district":{"saharanpur":{"name":"Saharanpur","tehsil":{"behat":{"name":"Behat","village":["Alliwala"]}}}}}
};

var state2 = {
"up":{"name":"Uttar Pradesh","district":{"saharanpur":{"name":"Saharanpur","tehsil":{"behat":{"name":"Behat","village":["sachin"]}}}}}
};

result must be:

result = {
"up":{"name":"Uttar Pradesh","district":{"saharanpur":{"name":"Saharanpur","tehsil":{"behat":{"name":"Behat","village":["Alliwala","sachin"]}}}}}
};

in the scenario i don't know the content of the state1 object and if the object1 having key same like object2 present then it should push only the array value of state2 into state1 array

Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
  • 1
    What's the question? – Rax Weber Mar 06 '17 at 16:47
  • I know the answer will involve using `JSON.parse()` and then the real question is how to merge the 2 objects and finally using `JSON.stringify()` to present your result. – jmbmage Mar 06 '17 at 16:51
  • What did you try? All you need to know is how to write a loop and access an object variable. – laurent Mar 06 '17 at 16:52
  • actually i need to merge two objects – Sachin Kalonia Mar 06 '17 at 16:55
  • [Take a look at this](http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically) – jmbmage Mar 06 '17 at 16:59
  • var state2 = { "up":{"name":"Uttar Pradesh","district":{"saharanpur":{"name":"Saharanpur","tehsil":{"behat":{"name":"Behat","village":["Alliwala"]}}}}} }; var state1 = { "up":{"name":"Uttar Pradesh","district":{"saharanpur":{"name":"Saharanpur","tehsil":{"behat":{"name":"Behat","village":["sachin"]}}}}} } result must be result = { "up":{"name":"Uttar Pradesh","district":{"saharanpur":{"name":"Saharanpur","tehsil":{"behat":{"name":"Behat","village":["sachin"]}}},"alhabad":{"name":"Alhabad","tehsil":{"rampur":{"name":"Rampur","village":["firozpur"]}}}}} } – Sachin Kalonia Mar 06 '17 at 17:04

2 Answers2

0

You could do something like

var finalState = combineArrays(state2,state1);


function combineArrays(array1,array2){
    var finalArray = [];
    for (var i = 0, len = array1.length; i < len; i++) {
      finalArray.push([array1[i][0], array2[i][0]]);
    }
    return finalArray;
}
0

You could generate a new object and append arrays with the items from the already inserted array.

function deepMerge(source, target) {
    Object.keys(source).forEach(function (k) {
        if (Array.isArray(source[k])) {
            if (!Array.isArray(target[k])) {
                target[k] = [];
            }          
            target[k] = target[k].concat(source[k]);
            return;
        }
        if (source[k] && typeof source[k] === 'object') {
            target[k] = target[k] || {};
            deepMerge(source[k], target[k]);
            return;
        }
        target[k] = source[k];
    });
}

var state1 = { up: { name: "Uttar Pradesh", district: { saharanpur: { name: "Saharanpur", tehsil: { behat: { name: "Behat", village: ["Alliwala"] } } } } } },
    state2 = { up: { name: "Uttar Pradesh", district: { saharanpur: { name: "Saharanpur", tehsil: { behat: { name: "Behat", village: ["sachin"] } } } } } },
    result = {};

deepMerge(state1, result);
deepMerge(state2, result);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392