2014-04-07 123 views
0

有沒有什麼辦法來一起聚集2個JSON對象和結果分配給第一個對象 我有拖JSON對象,我想他們聚集到一個對象連接兩個JSON對象

   <script type="text/javascript"> 
       $(document).ready(function() { 

        var FirstObject= [ 
        { "label": "salem", "actor": "" }, 
       { "label": "Aragorn", "actor": "Viggo Mortensen" }, 
       { "label": "Arwen", "actor": "Liv Tyler" }, 
       { "label": "Bilbo Baggins", "actor": "Ian Holm" }, 
       { "label": "Boromir", "actor": "Sean Bean" }, 
       { "label": "Frodo Baggins", "actor": "Elijah Wood" }, 
      { "label": "Gandalf", "actor": "Ian McKellen" }, 
       { "label": "Gimli", "actor": "John Rhys-Davies" }, 
       { "label": "Gollum", "actor": "Andy Serkis" }, 
      { "label": "Legolas", "actor": "Orlando Bloom" }, 
       { "label": "Meriadoc Merry Brandybuck", "actor": "Dominic Monaghan" }, 
       { "label": "Peregrin Pippin Took", "actor": "Billy Boyd" }, 
     { "label": "Samwise Gamgee", "actor": "Sean Astin" } 
       ]; 
     $("#search").keyup(function() { 


      $.ajax({ 
       type: "POST", 
       dataType: "json", 
       contentType: "application/json", 
       url: "WebService1.asmx/GetDocumentNames", 
       data: '{ }', 
       success: function (data) { 
        **FirstObject =data.d** 




       }, 
       error: function() { aler("Salem Error"); } 
      } 

    ); 
     }); 



    }); 


</script> 

等等聲明FirstObject = data.d我想聚集

+1

'$ .extend()'可能? – Scimonster

+0

看一看jQuery的'extend',有效地合併深對象:http://api.jquery.com/jquery.extend/ – David

+0

「拼接」兩個對象是詞的一個令人困惑的選擇,我也明白他想「合併「兩個對象,但我認爲他實際上想連接兩個數組,或將一個對象添加到數組中... – Djizeus

回答

3

使用jQuery extend這樣的:

// first argument tells jQuery's extend to deep copy the properties 
$.extend(true, FirstObject, data.d); 

引自jQuery的文檔:

合併兩個對象遞歸,修改第一。

0

看看在下面的例子:

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

您的變量FirstObject實際上是一個數組,假設你收到的是不是一個數組而是一個JSON對象追加或將其彙總到陣列中,你只需要調用數組的方法push

FirstObject.push(data.d); 

如果您收到的是一個JSON數組,而一個JSON對象,你可以在陣列中使用concat方法。

FirstObject.concat(data.d); 
0

如果要合併的JSON對象和維護共同的鑰匙。

var object1 = { 
 
    'key1': 10, 
 
    'key2': 'Hello ', 
 
    'key3': [ 
 
    'I', 
 
    'am' 
 
    ], 
 
    'key4': { 
 
    'key5': 'Hi', 
 
    'key6': 11 
 
    } 
 
}; 
 
var object2 = { 
 
    'key1': 11, 
 
    'key2': 'World', 
 
    'key3': [ 
 
    'an', 
 
    'Array' 
 
    ], 
 
    'key4': { 
 
    'key5': ' there', 
 
    'key6': '#SomeRandomString' 
 
    } 
 
}; 
 

 
function isArray(value) { 
 
    return Object.prototype.toString.call(value) === '[object Array]'; 
 
} 
 

 
function isObject(value) { 
 
    return Object.prototype.toString.call(value) === '[object Object]'; 
 
} 
 

 
var result = {}; 
 
for (var key in object1) { 
 
    if (object1.hasOwnProperty(key) && object2.hasOwnProperty(key)) { 
 
    
 
    //check if the value is of type array (works for key 3) 
 
    if (isArray(object1[key]) && isArray(object2[key])) { 
 
     result[key] = []; 
 
     for (var i in object1[key]) { 
 
     result[key].push(object1[key][i]) 
 
     } 
 
     for (var i in object2[key]) { 
 
     result[key].push(object2[key][i]) 
 
     } 
 
    } 
 
    
 
    //check if the value is of type object (works for key 4) 
 
    else if (isObject(object1[key])) { 
 
     result[key] = {}; 
 
     for (var key_inner in object1[key]) { 
 
     if (object1[key].hasOwnProperty(key_inner) && object2[key].hasOwnProperty(key_inner)) { 
 
      result[key][key_inner] = object1[key][key_inner] + object2[key][key_inner]; 
 
     } 
 
     } 
 
    } else { 
 
     result[key] = object1[key] + object2[key]; 
 
    } 
 
    } 
 
} 
 
//console.log(JSON.stringify(result)); 
 
console.log(result);