2015-10-13 116 views
-2

我想總結兩個對象爲一個總體對象,並獲得兩個值的百分比變化(然後除以值的數量)。我在應用這個邏輯時遇到了一些問題。數據是動態的,因此同一個數組中可能有兩個以上的對象。JavaScript - 合併/合併數組中的多個對象

我的首選方法是JavaScript,但如果它更簡單,jQuery也是完美的!下面是一個例子,這裏是一個的jsfiddle - http://jsfiddle.net/4z63cwhz/4/

響應數據:

$scope.data = [ 
     { 
      "July":{ 
      "params":{ 
       "frequency":"Monthly", 
       "category":"Overview", 
       "year":"2015", 
       "month":"July" 
      }, 
      "subcategory":{ 
       "us total":{ 
        "interaction rate":0.51, 
        "digital interaction rate":8.33, 
        "impressions":500, 
        "interactions":256 
       }, 
       "discover me":{ 
        "digital u.s. discover site sessions":50 
       }, 
       "me com":{ 
        "total me.com site sessions":50 
       } 
      }, 
      "action":"new" 
      }, 
      "August":{ 
      "params":{ 
       "frequency":"Monthly", 
       "category":"Overview", 
       "year":"2015", 
       "month":"August" 
      }, 
      "subcategory":{ 
       "us total":{ 
        "interaction rate":0.51, 
        "digital interaction rate":8.33, 
        "impressions":500, 
        "interactions":256 
       }, 
       "discover me":{ 
        "digital u.s. discover site sessions":50 
       }, 
       "me com":{ 
        "total me.com site sessions":50 
       } 
      }, 
      "action":"new" 
      } 
     } 
    ] 

JS:

$scope.calculate = function(){ 
     var sumObj = {}; 


     var local = $scope.data; 
     for(var i in local){ 
      var obj = local[i]; 
      for(var i2 in obj){ 
       for(var i3 in obj[i2].subcategory){ 
        //do the calculation here. 
        console.log(i3); 

       } 
      } 

     } 
    }; 

sumObj我希望能得到將類似於如下:

{ 
    "us total":{ 
     "interaction rate":{ 
      total: total#, 
      '%change': %change 
     }, 
     "digital interaction rate":{ 
      total: total#, 
      '%change': %change 
     }, 
     "impressions":{ 
      total: total#, 
      '%change': %change 
     }, 
     "interactions":{ 
      total: total#, 
      '%change': %change 
     } 
    }, 
    "discover me":{ 
     "digital u.s. discover site sessions":{ 
      total: total#, 
      '%change': %change 
     } 
    }, 
    "me com":{ 
     "total me.com site sessions":{ 
      total: total#, 
      '%change': %change 
     } 
    } 
} 

在此先感謝!

+0

目前尚不清楚你要添加什麼。請顯示您想要添加的兩個(或更多)對象的示例以及最終輸出應該是什麼樣子。 –

+0

英里,請看看jsfiddle。兩個對象的例子是響應數據,最終輸出是sumObj。我已經包括了它的樣子。還包括在jsfiddle中 - http://jsfiddle.net/4z63cwhz/5/ – habibg

+0

您需要簡化問題以減少人們花在理解問題上的時間。我建議你刪除所有不想添加的元素,並用實際結果更新sumObj。 –

回答

0

那麼如果JSON對象都重複同樣的格式,那麼你就不能這樣做:

var text= {}; 
local[current].attributeString (some calculation) local[next].attributeString += text; 

其中電流= i和未來= I + 1。

然後你可以使用:

var obj = JSON.parse(text); 

將字符串轉換成JSON對象。我可能會使用某種類型的鍵/值對而不是字符串,但這可能有助於減少一些循環。