2016-01-22 54 views
-2

響應存儲在DATA1接合兩個JSON對象與數組對象在它

ad.display(sha.c function(data1) { 
       dataFirst(data1); 

      }); 

響應存儲在數據2

ad.display(sha.c, function(data2) { 
       dataSecond(data2); 
       superDisplay(concatData); 
      }); 

function dataFirst(data1){ 
    return data1; 
} 
function dataSecond(data2){ 
    return data2; 
} 
function concatData(data1,data2){ 
    return dataFirst.concat(dataSecond); 
} 

響應對象data1和data2的是JSON,它看起來像

 data1={errors: null, rowdata: Array[4], state: Object} 
     data2={errors: null, rowdata: Array[9], state: Object} 

我想合併它們並創建一個json對象。得到的json應該包含data2中的所有值和data2中不存在的data1中的值。

所以concatData JSON應該是這樣的

concatData={errors: null, rowdata: Array[13], state: Object} 

這是我沒有得到預期的結果

rowdata應包含兩個DATA1值和數據2

JavaScript的答案是最受歡迎

+5

您想分享迄今爲止已經實驗的內容嗎? – cafebabe1991

+0

我試過concat函數 – kumar0981

+0

在你的問題中沒有JSON。那些只是對象。 –

回答

0

我拿了示例代碼from here和mo不同它合併數組。 A fiddle is available here(打開檢查員查看日誌)。

var extend = function() { 
    var extended = {}, deep = false, i = 0, length = arguments.length; 

    // Check if a deep merge 
    if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') { 
     deep = arguments[0]; 
     i++; 
    } 

    // Merge the object into the extended object 
    var merge = function (obj) { 
     for (var prop in obj) { 
      if (Object.prototype.hasOwnProperty.call(obj, prop)) { 
       // If deep merge and property is an object, merge properties 
       if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') { 
        extended[prop] = extend(true, extended[prop], obj[prop]); 
       } else if (Object.prototype.toString.call(obj[prop]) === '[object Array]') { 
        if (extended[prop] && Object.prototype.toString.call(extended[prop]) === '[object Array]') { 
        extended[prop] = extended[prop].concat(obj[prop]); 
        } else if (!extended[prop]) { 
        extended[prop] = obj[prop]; 
        } 
       } else { 
        extended[prop] = obj[prop]; 
       } 
      } 
     } 
    }; 

    // Loop through each object and conduct a merge 
    for (; i < length; i++) { 
     var obj = arguments[i]; 
     merge(obj); 
    } 

    return extended; 

}; 

var item1 = { name: 'Frank', age: 42, pets: ['cat', 'dog']}; 
var item2 = { name: 'Jane', pets: ['fish']}; 
var item3 = extend(true, item1, item2); 
window.console.log(item3); 

它應該讓你走上你想要的路。就我個人而言,我覺得需要更多的工作才能與jQuery的擴展相提並論。