如何使用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函数来计算满足特定条件的项目的平均值? 的相关文章

  • 在 Meteor.method 中调用函数返回未定义

    过去几天我一直在尝试从 Meteor 方法获取返回对象 每次我这样做我都会得到undefined在客户端上 Meteor methods CORSTest function let url www theverge com 2017 4 1
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 记录jQuery中调用的方法和参数

    假设我有 jQuery 并且加载了几个插件 我运行一些这样的代码 someSelector someMethod someParam someOtherParam someOtherSelector someOtherMethod anot
  • 通过 HTML5 文件和 URL API 正确创建和提供 PDF Blob

    好吧 假设我有文档数据存储在某处 让我们任意取this pdf http www grida no climate ipcc tar wg1 pdf tar 01 pdf 问题 1 我想要做的是对此 URL 进行 AJAX 调用 因为我需要
  • 未捕获类型错误:无法解析模块说明符“fs”。相对引用必须以“/”、“./”或“../”开头

    当我尝试在我自己的模块中导入 fs 模块时 例如import as fs from fs 浏览器控制台出现以下错误 Uncaught TypeError Failed to resolve module specifier fs Relat
  • 如何从 URL 字符串中删除某些参数?

    我有这个var存储表示充满参数的 URL 的字符串 我正在使用 AngularJS 我不确定是否有任何有用的模块 或者可能使用纯 JavaScript 来删除不需要的 URL 参数而无需使用正则表达式 例如我需要删除 month 05并且
  • 一个 Next.js 路由中的两个不同子域

    我想使用构建一个新平台Next js https nextjs org React js https reactjs org and 反应路由器 https reacttraining com react router web guides
  • Chrome 扩展程序中的后台脚本到底何时运行?

    在我的 chrome 扩展中 我有一个后台脚本 它将使用XMLHttpRequest note that this code is in the global scope i e outside of any function also n
  • 使用 easyXDM 调整 IFrame 大小

    我将 iFrame 代码提供给客户 以便他们可以显示我网站上的动态内容 我希望其页面上的 iFrame 能够调整大小以适合我的内容 我按照 easyXDM 网站的说明进行操作 但也许我遗漏了一些东西 我没有收到任何错误 但 iFrame 保
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • 如何获取数组中最后 5 个元素(不包括第一个元素)?

    在 JavaScript 数组中 如何获取最后 5 个元素 排除第一个元素 1 55 77 88 would return 55 77 88 添加其他示例 1 55 77 88 99 22 33 44 would return 88 99
  • 对数字和字母元素的数组进行排序(自然排序)

    假设我有一个数组 var arr 1 5 ahsldk 10 55 3 2 7 8 1 2 75 abc huds 我尝试对其进行排序 我得到了类似的东西 1 1 10 2 2 3 5 55 7 75 8 abc ahsldk huds 注
  • 在外部单击时关闭弹出 div

    我有一个弹出 div 仅在单击特定按钮时显示 单击同一按钮时它甚至会隐藏 我的问题是 我还想在单击外部任何地方时隐藏 div 我无法这样做 因为弹出 div 位于主包装类内部 并且无法通过在包装类上使用 click 事件并使其隐藏来做到这一
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • 如何在 OpenLayers 3 中删除监听器

    我做了一个copy https gis stackexchange com questions 178222 how to delete a listener in openlayers 3我在 stackoverflow 上提出的问题 因
  • 如何为 ng-repeat orderBy 创建回调?

    寻找一种方法让 AngularJS 的 ng repeat orderBy 过滤器在完成渲染后执行回调 Markup div table thead tr th Name th th Age th tr thead tbody tr tr
  • while 循环元素状态 cypress

    我有一个问题 我想单击一个按钮直到它消失 但次数可能会有所不同 所以我想检查可见性状态 当可见 true时单击按钮 当可见 false时结束测试 但问题是我不知道如何循环从获取元素到末尾的所有链 单击按钮一次 由于中断而停止 如果我删除中断
  • IE6 丢失查询字符串

    我有一个使用 javascript 从查询字符串中获取值的页面window location 从网络服务器运行时效果很好 但如果我通过将其放在地址栏中使用 IE6 在本地运行它 c mysite index htm 网站创建的任何查询字符串
  • 地址更改时如何停止 Angular 重新加载

    我正在使用 Angular 的scrollTo and anchorScroll像这样 app controller TestCtrl function scope location anchorScroll scope scrollTo
  • 我可以防止将 Leaflet 地图平移到世界边缘之外吗?

    有没有办法限制平移到世界边缘之外 在这幅画中 棕色是世界 灰色是虚空 我想让它不可能像这样平移 Leaflet 允许您控制地图抵抗被拖出边界的程度maxBoundsViscosity选项 值 0 到 1 将其设置为最大值会完全禁用拖动出界

随机推荐

  • 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