Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算对象数组中值的平均值_Javascript_Node.js - Fatal编程技术网

Javascript 计算对象数组中值的平均值

Javascript 计算对象数组中值的平均值,javascript,node.js,Javascript,Node.js,假设我有一个对象数组 const BookDetails = [ { bookName: 'Harry Pottar', readingTime: 10663 }, { bookName: 'Harry Pottar', readingTime: 10986 }, { bookName: 'kaptura Tech', readingTime: 7034 } ] 为此,我尝试了解决方案 const avgInvoiceProcessingTime = Math.round(((re

假设我有一个对象数组

const BookDetails = [
  { bookName: 'Harry Pottar', readingTime: 10663 },
  { bookName: 'Harry Pottar', readingTime: 10986 },
  { bookName: 'kaptura Tech', readingTime: 7034 }
]
为此,我尝试了解决方案

const avgInvoiceProcessingTime = Math.round(((readingTime.map(a => a.Time).reduce((a, b) => a + b, 0) / 1000)));
但它没有给出平均值


我想计算所有的读取时间并除以BookDetails数组的长度,但在添加所有读取时间时遇到困难。

您可以使用
reduce
轻松实现这一点。添加所有
readingTime
并将其除以
readingTime
length

readingTime
是对象的属性,而不是数组

只能在
数组上使用
reduce

您需要用
BookDetails.length

const BookDetails=[{
书名:“哈利·波特”,
阅读时间:10663
},
{
书名:“哈利·波特”,
阅读时间:10986
},
{
书名:“卡普图拉科技”,
阅读时间:7034
},
];
常数结果=
BookDetails.reduce((会计科目,当前)=>acc+curr.readingTime,0)/
书籍详细信息。长度;

控制台日志(结果)您使用reduce是正确的,但您需要在阵列上使用它:

const BookDetails=[
{书名:'Harry Pottar',阅读时间:10663},
{书名:'Harry Pottar',阅读时间:10986},
{书名:'kaptura Tech',阅读时间:7034}
]
const sum=BookDetails.reduce((acc,cur)=>acc+cur.readingTime,0);
const count=BookDetails.length;
const avg=总和/计数;

console.log(avg)
您可以使用
reduce
计算所有
读取时间的总和,并将其转换为秒。最后将结果除以数组中的项数

const BookDetails=[
{书名:“哈利·波特”,阅读时间:10663},
{书名:“哈利·波特”,阅读时间:10986},
{书名:“卡普图拉科技”,阅读时间:7034},
];

BookDetails.reduce((r,o)=>r+o.readingTime/1000,0)/BookDetails.length
“但它不会给出平均值。”-它首先应该给你一个错误,因为没有变量
readingTime
。你需要
BookDetails.map(a=>a.readingTime)。减少((a,b)=>a+b,0)
,将所有
readingTime
值相加,得到
28683
。如果你想得到平均值,为什么要除以1000?不清楚。因为它是毫秒,你想把它转换成秒。好的,但是你仍然需要除以你在那里总结的项目数。这回答了你的问题吗@西瓦帕拉丹请检查这是否解决了您的问题,如果您有任何问题,请告诉我。