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?不清楚。因为它是毫秒,你想把它转换成秒。好的,但是你仍然需要除以你在那里总结的项目数。这回答了你的问题吗@西瓦帕拉丹请检查这是否解决了您的问题,如果您有任何问题,请告诉我。