2017-03-06 42 views
-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"]}}}}} 
}; 

結果必然是:合併兩個JavaScript對象有一個共同的陣列,但包含不同的價值

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

我不知道狀態1對象的內容,如果有鑰匙一樣object1像目前Object2的話應該只推的狀態2的數組值到狀態1陣列

+1

有什麼問題嗎? –

+0

我知道答案會涉及到使用'JSON.parse()',然後真正的問題是如何合併這兩個對象並最終使用'JSON.stringify()'來顯示結果。 –

+0

你嘗試了什麼?所有你需要知道的是如何編寫一個循環並訪問一個對象變量。 –

回答

0

您可以生成一個新對象,並使用已插入數組中的項目追加數組。

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

+0

謝謝它爲我工作! –

0

你可以做類似

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

state2和state1不是數組他們是對象,所以我們不能在這個 使用array.length,而且它給了我們錯誤的結果 –

相關問題