0

我想創建一個函數,用下面的數據做一些數組操作(見下文)。想知道是否使用map/forEach或Reduce來完成此項工作?使用map/reduce來計算總數

function calculateTotalSelections { 
     "selections":[ 
     { 
      "item_selected": 1, 
     }, 
     { 
      "item_selected": 3, 
     }, 
     { 
      "item_selected": 4 
     }, 
     { 
      "item_selected": 4 
     }, 
     { 
      "item_selected": 1567486585 
     }, 
     { 
      "item_selected": 1567486585 
     } 
    ] 
} 

返回被選中像

項目4的一些輸出兩次

項1被選擇一次

項1567486585被選擇一次

(約束:所述項目選擇可能未知)

回答

0

嘗試創建通過迭代

var output = {}; 
selections.forEach(function(val){ 
    var value = val["item_selected"]; 
    output[value] = output[value] || 0; 
    output[value]++; 
}); 

此地圖現在output有每個值

0

您可以使用reduce創建與項目ID爲鍵,作爲值頻率對象的頻率。

selections.reduce(function(frequencies, item){ 
    if (!item.item_selected) return frequencies; 
    frequencies[item.item_selected] = (frequencies[item.item_selected] || 0) + 1; 
    return frequencies; 
}, {}); 
// --> { '1': 1, '3': 1, '4': 2, '1567486585': 2 }