首页 > 解决方案 > 在 ExtJS 中的数组中查找组平均值

问题描述

我试图找到最大值和最小值的组平均值。下面是我的数据存储。

items{
   0:
      {
      data:{
            USERS: 5
            USAGE: 10.5
           }
       }
    1:
      {
      data:{
            USERS: 5
            USAGE: 15
           }
       }
     2:
      {
      data:{
            USERS: 1
            USAGE: 20
           }
       }
}

我想找到关于用户的最小和最大组平均值。所以最终结果应该是:

result{
  0: {
    USERS: 5
    USAGE: 12.75 /* i.e (15+10.5) / 2 */
  }
  1:{
    USERS: 1
    USAGE: 20
  }

}

抱歉我的解释和英语不好。

标签: javascriptjsonextjs

解决方案


您可以收集 a 中的所有值Map并通过将平均值分组来呈现想要的结果USERS

const
    mapIt = (map, { data: { USERS, USAGE } }) => {
        var temp = map.get(USERS) || { USERS, sum: 0, count: 0 };
        temp.sum += USAGE;
        temp.count++;
        return map.set(USERS, temp);
    };


var items = { 0: { data: { USERS: 5, USAGE: 10.5 } }, 1: { data: { USERS: 5, USAGE: 15 } }, 2: { data: { USERS: 1, USAGE: 20 } } },
    result = Object.assign({}, Array.from(
        Object.values(items).reduce(mapIt, new Map),
        ([USERS, { sum, count }]) => ({ USERS, USAGE: sum / count })
    ));
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读