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をこのマップを作成してみてくださいあなたが値としてキーとその頻度などの項目IDを持つオブジェクトを作成するためにreduceを使用することができ、各値

0

の周波数を有しています。

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 } 
関連する問題