Javascript 使用ES6获取阵列的平均值?
我一直在尝试通过我创建的函数来获得排名的平均值,如果我通过getAverage()函数传递数组,那么一切都会很好,但当我想从列表数组传递数组时就不会了Javascript 使用ES6获取阵列的平均值?,javascript,arrays,function,Javascript,Arrays,Function,我一直在尝试通过我创建的函数来获得排名的平均值,如果我通过getAverage()函数传递数组,那么一切都会很好,但当我想从列表数组传递数组时就不会了 const list = [{ name: "Ben", ranking: 3 }, { name: "Harry", ranking: 1 }, { name: "Kim", ranking: 2 }, { name: "John", ranking: 5 }, { name: "Liz", rankin
const list = [{
name: "Ben",
ranking: 3
}, {
name: "Harry",
ranking: 1
}, {
name: "Kim",
ranking: 2
}, {
name: "John",
ranking: 5
}, {
name: "Liz",
ranking: 4
}];
//Average of ranking
const getAverage = (arr) => {
const reducer = (total, currentValue) => total + currentValue;
const sum = arr.reduce(reducer);
return sum / arr.length;
}
getAverage();
为什么要将减速机功能与实际减速机分离?此外,.reduce没有初始值,因此我建议:-
const sum=arr.reduce((总计,当前)=>total+=current.ranking,0)
您的功能已关闭。请记住,您正在迭代对象数组,而不是值数组
const getAverage = (arr) => {
const reducer = (total, currentObj) => total + currentObj.ranking;
const sum = arr.reduce(reducer, 0);
return sum / arr.length;
}
// use:
// console.log(getAverage(list));
编辑
此外,您需要将减速机的起始值初始化为零,否则它会将数字添加到undefined,从而导致NaN。您从未向函数传递任何内容,因此
arr
将是undefined
。为什么不想将数据传递给正在调用的函数。如果不传递任何内容,代码将不会执行任何操作。因此正确的代码应该是getAverage(list)
@parthmanaktalagetaverage(list);返回+=
运算符的名称?你只是在另一个回答中做了同样的事情。实际上只需要+
…换句话说,返回两个值的总和。除此之外,您正在将对象添加到数字“为什么要将reducer函数从实际reduce中分离出来?”这不是问题。“此外,.reduce没有初始值,”这是一个潜在的问题,但不是OP所问的问题。这并不能真正回答问题。是的,您可能只需要+
,但您希望将总和加上当前值就可以了。@user3094755没有任何区别-该值会立即返回,无论如何-这不像是分配给total
的任务会被使用。试着运行这个…会发现使用OP的输入失败谢谢你的回复!帮了大忙!我完全忘了初始化减速机的起始值。
const getAverage = (arr) => {
const reducer = (total, currentObj) => total + currentObj.ranking;
const sum = arr.reduce(reducer, 0);
return sum / arr.length;
}
// use:
// console.log(getAverage(list));