2015-06-05 46 views
1

我想圖合併JSON。我有兩個JSON數組,並想從一個數組對象添加到另一個具有相同的價值觀JavaScript:將JSON對象從一個數組添加到另一個數組有條件地

產品

"Products": [ 
       { 
        "Date": "2015-04-28T12:30:19.107", 
        "Code": "003UYTX1A", 
        "Title": "Divatex Dots Microfiber Queen Bed In the Bag", 
        "Description": "Go crazy with lots of dots with Divatex,      
        "Weight": 7.60, 
        "WeightUnit": "pounds",      
        "AverageRating": 4.1,      
        "EstimatedSalesPerDay": 761, 
        "ProfitScore": 50, 
        "UpdateStatus": 0, 
        "VersionCode": 23 
       }, 
       { 
        "Date": "2015-04-28T12:29:46.66", 
        "Code": "05461AQDV", 
        "Title": "Wilton 1912-1294 100 Count Party Bags", 
        "Description": "Some Description,      
        "Weight": 8.10, 
        "WeightUnit": "pounds",      
        "AverageRating": 4.0,      
        "EstimatedSalesPerDay": 711, 
        "ProfitScore": 45, 
        "UpdateStatus": 0, 
        "VersionCode": 23 
       }] 

詳細

"Detail": [ 
       { 
        "Date": "2015-04-28T12:29:45.95", 
        "Code": "003UYTX1A", 
        "CategoryId": "1055398", 
        "CategoryTitle": "Some Title", 
        "TotalReviews": 31 
       }, 
       { 
        "Date": "2015-04-28T12:29:45.95", 
        "Code": "05461AQDV", 
        "CategoryId": "1055398", 
        "CategoryTitle": "Title",             
        "TotalReviews": 211 
       }, 
       { 
        "Date": "2015-04-28T12:29:45.95", 
        "Code": "003UYTX1A", 
        "CategoryId": "1055398", 
        "CategoryTitle": "Category Title", 
        "TotalReviews": 101 
       }] 

我需要這些陣列組合的同一基礎上的對象Code兩者的價值如下

 "Combined": [ 
       { 
        "Date": "2015-04-28T12:30:19.107", 
        "Code": "003UYTX1A", 
        "Title": "Divatex Dots Microfiber Queen Bed In the Bag", 
        "Description": "Go crazy with lots of dots with Divatex,      
        "Weight": 7.60, 
        "WeightUnit": "pounds",      
        "AverageRating": 4.1,      
        "EstimatedSalesPerDay": 761, 
        "ProfitScore": 50, 
        "UpdateStatus": 0, 
        "VersionCode": 23, 
        "Detail":[ 
         { 
          "Date": "2015-04-28T12:29:45.95", 
          "Code": "003UYTX1A", 
          "CategoryId": "1055398", 
          "CategoryTitle": "Some Title", 
          "TotalReviews": 31 
         }, 
         { 
          "Date": "2015-04-28T12:29:45.95", 
          "Code": "003UYTX1A", 
          "CategoryId": "1055398", 
          "CategoryTitle": "Category Title", 
          "TotalReviews": 101 
         }] 
       }, 
       { 
        "Date": "2015-04-28T12:29:46.66", 
        "Code": "05461AQDV", 
        "Title": "Wilton 1912-1294 100 Count Party Bags", 
        "Description": "Some Description,      
        "Weight": 8.10, 
        "WeightUnit": "pounds",      
        "AverageRating": 4.0,      
        "EstimatedSalesPerDay": 711, 
        "ProfitScore": 45, 
        "UpdateStatus": 0, 
        "VersionCode": 23, 
        "Detail":[ 
         { 
          "Date": "2015-04-28T12:29:45.95", 
          "Code": "05461AQDV", 
          "CategoryId": "1055398", 
          "CategoryTitle": "Title",             
          "TotalReviews": 211 
         }] 
       }] 

任何bes t想法得到需要的結果?我必須在JavaScript中編碼。

回答

2

你可以試試這個:

var output = {Combined: []}; 
output.Combined = Products.map(function(product){ 
    var details = Detail.filter(function(detail){ 
     return detail.Code === product.Code 
    }) || []; 
    product.Detail = details; 
    return product; 
}); 

什麼代碼所做的就是通過你的Products迭代,找到匹配的Detail這可能是多個甚至可以爲null,並將其合併到您的相關產品對象。

4

如果使用下劃線,你能做到這一點很容易, http://underscorejs.org/

_.each(products,function(product,index){ 

     var detail = _.where(details,{'Code' : product.Code}) 
     if(detail){ 
       product.details=detail; 
     } 
     products[index] = product 
    }) 
+0

嗯,我才意識到'where'也接受JSON參數。輝煌。 –

2
var jObject = {}; 

jObject['Combined'] = Products; 

for(var i=0;i<Products.length;i++) { 
    for(var j=0;j<Detail.length;j++){ 
     if(Products[i].Code === Detail[j].Code) { 
      if(Products[i].Detail == undefined) { 
       Products[i].Detail = []; 
       Products[i].Detail.push(Detail[j]); 
      } else { 
       Products[i].Detail.push(Detail[j]); 
      } 
     } 
    } 
} 
+0

Tao P. R. Code太好了。我以正常的方式嘗試。 – Vasanth

相關問題