当前位置: 首页 > 编程笔记 >

根据多个过滤器JavaScript从JSON数据计算平均值

杜焕
2023-03-14
本文向大家介绍根据多个过滤器JavaScript从JSON数据计算平均值,包括了根据多个过滤器JavaScript从JSON数据计算平均值的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个像这样的对象数组-

const arr = [
   { "SupplierName" : "John", "Category " : "A", "Points" : 3 },
   { "SupplierName" : "John", "Category " : "A", "Points" : 11 },
   { "SupplierName" : "John", "Category " : "A", "Points" : undefined },
   { "SupplierName" : "John", "Category " : "B", "Points" : 2 },
   { "SupplierName" : "John", "Category " : "B", "Points" : 6 },
   { "SupplierName" : "Praveen", "Category " : "A", "Points" : 3 },
   { "SupplierName" : "Praveen", "Category " : "A", "Points" : 7 }
];

我们需要编写一个包含一个这样的数组的JavaScript函数。

该函数应执行以下操作-

  • 将重复的供应商分组为一个唯一的单独对象(通过重复,我们指的是具有相同“ SupplierName”和“ Category”字段的对象)。

  • 将他们的观点加在一起

  • 向每个对象添加一个新的“平均”字段,其中包含该供应商的平均分数。

因此,最终输出应如下所示:

const output = [
   { "SupplierName" : "John", "Category " : "A", "Points" : 14, "Average" : 7 },
   { "SupplierName" : "John", "Category " : "B", "Points" : 8, "Average" : 4 },
   { "SupplierName" : "Praveen", "Category " : "A", "Points" : 10, "Average" : 5 }
];

示例

const arr = [
   { "SupplierName" : "John", "Category " : "A", "Points" : 3 },
   { "SupplierName" : "John", "Category " : "A", "Points" : 11 },
   { "SupplierName" : "John", "Category " : "A", "Points" : undefined },
   { "SupplierName" : "John", "Category " : "B", "Points" : 2 },
   { "SupplierName" : "John", "Category " : "B", "Points" : 6 },
   { "SupplierName" : "Praveen", "Category " : "A", "Points" : 3 },
   { "SupplierName" : "Praveen", "Category " : "A", "Points" : 7 }
];
const groupAndAverage = (arr = []) => {
   const groups = arr.reduce((acc, obj) => {
       const name = obj.SupplierName + obj.Category;
      if (acc[name]) {
         if (obj.Points) (acc[name].Points += obj.Points) && ++acc[name].Average;
      }
      else { acc[name] = obj;
         acc[name].Average = 1;
         //将“平均”属性作为项目计数器(在第一阶段)
      };
      return acc;
   }, {});
   // getting "average of Points" 
   const res = Object.keys(groups).map( name => {       
   groups[name].Average = Math.round(groups[name].Points/groups[name].Average);
      return groups[name];
   });
   return res;
}; console.log(JSON.stringify(groupAndAverage(arr), undefined, 4));

输出结果

控制台中的输出将是-

[
   {
      "SupplierName": "John",
      "Category ": "A",
      "Points": 22,
      "Average": 6
   },
   {
      "SupplierName": "Praveen",
      "Category ": "A",
      "Points": 10,
      "Average": 5
   }
]
 类似资料:
  • 本文向大家介绍awk 根据表格数据计算列中的平均值,包括了awk 根据表格数据计算列中的平均值的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个;用作列定界符的文件。我们使用以下程序在第二列中计算值的平均值,提供的输入是学生组的成绩列表: 该程序的输出为2.125。 请记住,它NR保存了要处理的行数,END因此在块中它保存了文件中的总行数。 请记住,在许多应用程序(监视,统计)中,中位数是更

  • 问题内容: 我有一个表,其中包含一列要从中提取信息的JSON数据。具体来说,我只想获取平均值。 我所拥有的例子: 我想要的例子: 关于如何使该查询正常工作的任何建议? 问题答案: 您的json数组被弄乱了,就像@poszcommented一样。必须是: 您的查询也以多种方式扭曲。在第 9.3 页中将像这样工作: SQL提琴。 在即将到来的pg 9.4中, 我们可以使用新的来简化操作(转换中也不太容

  • 我想根据最近3天的数字计算每个customer_id和日期的移动平均值。为了计算5月4日的移动平均数,我们需要计算5月1-3日的平均购买量 输出火花DF

  • 问题内容: 我如何知道JavaScript的周数和年份来计算日期?对于第20周和2013年以获得5/16/2013,我正在尝试这样做: 问题答案: function getDateOfWeek(w, y) { var d = (1 + (w - 1) * 7); // 1st of January + 7 days for each week 这使用简单的周定义,即2013年的第20周是5月14日

  • 我正在编写一个java代码,它在数组中计算N个学生的平均成绩,当我输入像{3,4,3}这样的成绩时,它运行良好,但当我使用像{3.7,2.5,3.2}这样的带有小数的数字时,它开始给我带来错误,我想创建一个数据类型的类,例如学生。 任何帮助都将不胜感激。

  • 问题内容: 我在javascript中有一组对象。内容看起来像这样; 我想保留一些对象并删除其余的对象。如果object属性为2或34,则将保留对象。其他对象被删除。遗嘱的结果看起来像这样; 我正在使用node.js v6.91。 编辑:有人建议我使用过滤器来解决这种问题。欢迎使用过滤器技术的答案。 问题答案: 您可以尝试以下方法1和2: 方法1 :(使用) 注意:这将返回一个新数组,并且不会修改