如何使用javascript的reduce函数来计算满足特定条件的项目的平均值?

2024-01-25

因此,假设我有以下对象数组:

var arr = [
  {"name": "John", "score": "8.8"},
  {"name": "John", "score": "8.6"},
  {"name": "John", "score": "9.0"},
  {"name": "John", "score": "8.3"},
  {"name": "Tom",  "score": "7.9"}
];

var count = 0;
var avgScore = arr.reduce(function (sum,person) {
  if (person.name == "John") {
    count+=1;
    return sum + parseFloat(person.score);
  }
  return sum;
},0)/count);

问题:有没有一种方法可以在不创建全局变量的情况下计算“John”的平均分count多变的。理想情况下,计数应位于 arr.reduce 中匿名函数的内部。


为了避免全局变量,请使用标准解决方案,例如IIFEs https://stackoverflow.com/q/592396/1048572 or 块作用域 https://stackoverflow.com/q/33534485/1048572。不过我猜你正在寻找一种方法来避免可变计数器。

最简单的方法是预先删除所有其他人:

var johns = arr.filter(function(person) {
  return person.name == "John";
});
var avgScore = johns.reduce(function (sum, person) {
  return sum + parseFloat(person.score);
}, 0) / johns.length;

但您也可以使用count与对象中的总和一起传递:

var stats = arr.reduce(function ({count, sum}, person) {
  return (person.name == "John")
    ? {count: count+1, sum: sum + parseFloat(person.score)}
    : {count, sum};
}, {count:0, sum:0})
var avgScore = stats.sum / stats.count);

(using ES6 object property shorthands and destructuring)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用javascript的reduce函数来计算满足特定条件的项目的平均值? 的相关文章

  • 使用 jquery 远程图像属性

    目前我正在尝试获取远程图像宽度 高度 我正在开发一个链接共享模块 就像当你在 Facebook 上粘贴链接时 你可以看到标题 描述和图像 所以我尝试使用 php getimagesize 来获取图像宽度 高度 但速度非常慢 所以我正在考虑使
  • 将鼠标悬停时的鼠标光标更改为锚状样式

    如果我将鼠标悬停在div鼠标光标将更改为 HTML 锚点中的光标 我怎样才能做到这一点 假设你的div has an id myDiv 将以下内容添加到您的 CSS 中 这cursor pointer指定光标应与用于锚点 超链接 的手形图标
  • 渲染货币和符号并与来自不同单元格的数据相结合

    我正在使用最新的 jQuery DataTables v1 10 7 我正在尝试将数字解析为以下格式 239 90 USD 我可以使用此命令使货币正常工作 columns data Price render fn dataTable ren
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 如何使用javascript将大图像转换为十六进制?

    如果我尝试将图像转换为十六进制 无论我使用哪个函数 我都会收到此错误消息 该图像的大小为 7 MB 19812 毫秒 清理 1401 2 1455 0 gt 1401 2 1455 0 MB 9 9 0 ms 自上次 GC 以来 8 3 m
  • 如何格式化 Highcharts 的 (x,y) 对数据的日期时间

    我的序列化方法会产生如下所示的日期时间字符串 2014 07 09T12 30 41Z 为什么下面的代码不起作用 function container highcharts xAxis type datetime series data x
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • Hadoop 减速器数量配置选项优先级

    以下3个设置reduce数量的选项的优先级是什么 换句话说 如果三者都设置了 会考虑哪一个呢 Option1 setNumReduceTasks 2 within the application code Option2 D mapredu
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐

  • VB.NET 中的递归文件搜索

    我有一个函数可以对文件进行递归目录搜索 但是当我搜索驱动器时 我收到访问被拒绝错误 从而停止搜索 我怎样才能避免这些错误 这是我使用的函数 lstSearch GetFilesRecursive FolderBrowserDialogMai
  • Mockito Matchers isA、any、eq 和 Same 之间有什么区别?

    我对它们之间的区别以及在哪种情况下选择哪一个感到困惑 有些差异可能很明显 例如any and eq 但我将它们全部包括在内只是为了确定 我想知道它们的差异 因为我遇到了这个问题 我在 Controller 类中有这个 POST 方法 pub
  • 在没有锁定的情况下读取同时修改的整数变量是否安全?

    假设我在一个类中有一个整型变量 并且这个变量可能会被其他线程并发修改 写入受互斥体保护 我也需要保护读取吗 我听说有一些硬件架构 如果一个线程修改一个变量 而另一个线程读取它 那么读取的结果将是垃圾 在这种情况下 我确实需要保护读取 但我从
  • 如何在 WebPack 构建环境中将 CryptoJS 与 Angular 2 和 TypeScript 一起使用?

    关于将 CryptoJS 库与 Angular 2 一起使用存在很多问题 但大多数都假设使用 SystemJS 并且所有问题似乎都与当前版本的 TypeScript 过时了 任何人都可以就如何将 CryptoJS 库与 Angular 2
  • glViewport 在 Android 和 iOS 中的不同结果

    我刚刚开始使用 opengl es 为我的跨平台框架 iOS 和 Android 开发渲染器 当我到达视口内容 分屏内容所需 时 我注意到 iOS 和 Android 之间存在差异 这是两张图片 Android其实还有一个毛病 它似乎结束了
  • Python telnetlib:令人惊讶的问题

    我正在使用 Python 模块 telnetlib 创建一个 telnet 会话 使用国际象棋服务器 但我遇到了一个我实在无法解决的问题 下面的代码可以完美运行 gt gt gt f login my server code for log
  • 将视频上传到 googlevideo.com

    也许这个问题听起来很愚蠢 但我真的需要答案 我需要知道如何将视频上传到 googlevideo com 如下网址 https r2 sn 4pgnuhxqp5 jb3s googlevideo com videoplayback requi
  • 保存文件 - xmlSerializer

    我正在创建一个使用以下代码序列化文件的方法 public void Save Object file Type type String path Create a new Serializer XmlSerializer serialize
  • F# 交互式 CsvProvider 未定义

    我正在交互式控制台中加载 FSharp Data 库加载没有任何问题 gt r FSharp Data dll gt Referenced C Users pw AppData Local Temp FSharp Data dll file
  • 在 Dask 数组上使用 scikit-learn cosine_similarity - python

    我有 Dask 来处理无法放入内存的大量向量 并使用 scikit learn cosine similarity 来计算这些向量之间的余弦相似度 即 import dask array as da from sklearn metrics
  • fancybox 将标题放在顶部并留在那里

    我正在使用 Fancybox 2 0 我希望标题框出现在图像上方或图像顶部 而不是下方 就在所有内容之上 我试着做fancybox inner style position absolute 但随后的高度fancybox wrap不会被设置
  • 如何在邮递员中传递客户端凭据?

    这个卷发效果很好 curl acme acmesecret localhost 9999 uaa oauth token d password password username user grant type password H Acc
  • CMake - Code::Blocks - hello world - 基本示例

    在哪里可以找到生成要在 CMake 中加载的简单 CMake Hello World 项目的指南 平台 联想32位Linux Kubuntu 1 我将使用 git 存储库 git CMakeLists txt git code CMakeL
  • 删除托管(非外部)表时,hdfs 上的 Hive 文件不会被删除

    当我从 Hive 交互式命令行删除托管表时 在 hdfs 上创建的基础文件位于 user hive warehouse
  • 是否可以在 Angular 2 上创建组件抽象?

    我想创建一个具有初始行为的 AbstractComponent 同时能够在需要时在子组件上覆盖它 这可能吗 这是一个好的做法吗 应该看起来或多或少像这样 export abstract class AbstractComponent imp
  • 如何计算出移动物体的未来位置? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在创建一个小游戏 我有一个光子鱼雷 它从一艘船上向目标发射 现在 由于鱼雷的速度很慢 如果目标正在移动 船将永远不会击中任何目标 我想解决这个问题
  • 如何在没有用户和登录的情况下使用JWT?

    我正在 Node js 中制作一个简单的文件转换器 API 并且希望避免请求中的滥用 所以我正在寻找一种无需 userModel 登录等即可使用 JWT 的方法 但我不能在网上做事 谢谢 我们不需要用户或登录来创建 JWT 我们可以使用任何
  • Mercurial 删除历史记录

    Mercurial 有没有办法从数据库中删除旧的变更集 我有一个 60GB 的存储库 这使得克隆变得非常痛苦 我想在某个日期之前删除所有内容 并将庞大的数据库收起来以收集灰尘 没有简单 推荐的方法可以直接对现有存储库执行此操作 但是 您可以
  • 为什么 PDO 异常错误没有被捕获?

    我有一个 PHP 脚本 在 SQL 查询语句中存在两个故意的拼写错误 try stmt dbh gt prepare SELECT COUNT FROM Product WHERE non existent column stmt gt b
  • 如何使用javascript的reduce函数来计算满足特定条件的项目的平均值?

    因此 假设我有以下对象数组 var arr name John score 8 8 name John score 8 6 name John score 9 0 name John score 8 3 name Tom score 7 9