2015-09-18 140 views
-1

我在想方設法創建一個彙總統計信息集合的新對象。如何基於對象屬性創建新對象

這個新對象的信息來自於以下幾個形式的數組現在

enter image description here

,我需要這個數據存儲在一個新的對象,像:

{ 
    blocks: [41, 22, 3, 4], 
    delivered: [23, 11, 2, 1] 
} 

並訪問它像object.blocks [0],object.delivered [0],object.blocks 1,object.delivered 1 ...等

應該自動創建'塊','交付'的地方。

這甚至可能嗎?

+1

在哪裏,這些數字(41,22,3,4,...)在你的例子是從哪裏來的?屏幕截圖中顯示的數據的期望輸出(以及原因)是什麼? – Andreas

+2

你知道什麼是循環嗎? –

+0

歡迎來到Stack Overflow!請[參觀],環顧四周,閱讀[幫助],特別是[*我如何提出一個好問題?](/ help/how-to-ask)不要使用截圖顯示數組,使用格式化文本。 –

回答

0

這只是循環訪問數組並挑選出值,然後將它們存儲在某處的問題。

例如:

var result = {}; 
arr.forEach(function (obj) { 
    Object.keys(obj).forEach(function (key) { 
     if (key === "blocks" || key === "delivered") { 
      if (! Array.isArray(result[key])) { 
       result[key] = []; 
      } 
      result[key].push(obj[key]); 
     } 
    }); 
}); 
+0

謝謝您花時間回答我。這個腳本正是我想要的。 –

0

關閉我的頭頂我無法想象一個內置函數將一個對象數組轉換爲一個更好的術語「數組對象」。但JavaScript代碼這樣做並不是非常困難:

function arrayOfObjToObjOfArrays(arr) { 
    toRet = { blocks: [], delivered: [] }; 
    for(var i = 0; i < arr.length; ++i) { 
    var obj = arr[i]; 
    for(var k in obj) { 
     if(k === 'blocks' || k === 'delivered') { 
     toRet[k].push(obj[k]); 
     } 
    } 
    } 
    return toRet; 
} 

這沒有經過測試,但它應該足以讓你開始。

+0

感謝您的幫助! –