Javascript-简单的练习
我的任务是编写一个函数Javascript-简单的练习,javascript,arrays,function,math,Javascript,Arrays,Function,Math,我的任务是编写一个函数getEvenAverage,它应该只接受一个参数-array。此函数应返回此数组中偶数的平均值。如果数组中没有任何偶数,则函数应返回null 我非常感谢您的反馈:-) 函数getEvenAverage(选项卡){ { 如果(i%2==0){ 对于(变量i=0;i0?newArr.reduce((acc,num)=>acc+num)/newArr.length:null; } log(getEvenAverage([1,2,3,4]); log(getEvenAverage
getEvenAverage
,它应该只接受一个参数-array。此函数应返回此数组中偶数的平均值。如果数组中没有任何偶数,则函数应返回null
我非常感谢您的反馈:-)
函数getEvenAverage(选项卡){
{
如果(i%2==0){
对于(变量i=0;i你说你需要归还一些东西,所以归还它。同时将if
语句移动到for
循环中,并修复一些其他语法错误。正如评论中所指出的,您应该将sum
除以偶数,得到您的avg
:
函数getEvenAverage(选项卡){
var总和=0;
var-evens=0;
对于(变量i=0;i log(getEvenAverage([1,2,3])代码>以下是正确的函数
function getEvenAverage(tab) {
var sum = 0, count = 0;
for (var i = 0; i < tab.length; i++) {
if (i % 2 === 0) {
sum += parseInt(tab[i], 10);
count++;
}
}
if(sum > 0)
return (sum / count);
return null;
}
函数getEvenAverage(选项卡){
变量和=0,计数=0;
对于(变量i=0;i0)
返回(总和/计数);
返回null;
}
祝您编码愉快。试试这个功能
函数getEvenAverage(选项卡){
var numberOfEvens=0;
var总和=0;
对于(var i=0;i您只需要偶数,因此首先将数组放入一个新数组,然后将所有数字相加(使用或使用for循环)并除以其长度
函数getEvenAverage(数组){
if(!Array.isArray(Array))返回null;//如果确定传递了数组,则不必返回null
var evenArray=array.filter(函数(值){
返回值%2==0
});
if(evenArray.length==0)返回null;
var evenSum=evenArray.reduce(函数(总计、当前){
返回总+电流;
});
var evenAvg=evenSum/evenArray.length;
返回平均值;
}
log(getEvenAverage(“不是数组”);
log(getEvenAverage([1,3,7]);//没有偶数
log(getEvenAverage([1,2,3]);//单偶数
log(getEvenAverage([2,2,2]);//仅偶数
log(getEvenAverage([1,2,3,10,18]);//更大的数组
log(getEvenAverage([0,1]);//0甚至是
除了使用for循环之外,您还可以使用filter和reduce数组方法
函数getEvenAverage(arr){
const newArr=arr.filter(number=>number%2==0);
返回newArr.length>0?newArr.reduce((acc,num)=>acc+num)/newArr.length:null;
}
log(getEvenAverage([1,2,3,4]);
log(getEvenAverage([1,3,5,7]);
您也可以使用array reduce来完成,只需遍历一个数组
const reducer=(acc,val)=>{
让{
总和
计数
}=行政协调会;
返回值(val%2==0{
sum:sum+val,
计数:计数+1
}:acc);
};
常量getEvenAverage=(输入)=>{
常量初始值={
总数:0,,
计数:0
};
常量输出=输入.reduce(减速机,初始值);
如果(output.count==0){
返回null;
}否则{
返回output.sum/output.count;
}
};
log(getEvenAverage([1,2,3]);
函数getEvenAverage(arr){
var evenNumbers=[];//我们使用一个数组来保存所有evenNumbers
对于(var el of arr){//我们在接收到的数组上循环以检查接收到的
如果(el%2!=0){//如果数字是偶数
evenNumbers.push(el);//我们将其添加到evenNumbers数组中
}
}
如果(evenNumbers.length==0){//当我们没有偶数时
return false;//然后返回false
}
否则{
//下一个代码块计算偶数值的平均值
返回evenNumbers.reduce((pv,cv)=>pv+cv,0)/evenNumbers.length;
}
}
var evenNumbers=[4,2,3,6,5,9];
getEvenAverage(EvenNumber);//返回5.667
getEvenAverage([2,4,6,8]);//返回false
您的函数没有返回任何东西我认为您在示例中遗漏了什么?有太多的花括号({
}
)不要使用var
,而是使用let
)(它将直接显示您所犯的一些错误)@emil一些额外的block语句确实令人困惑,但它们并没有改变代码的工作方式:)我认为你不应该在tab.length上进行除法,而应该在有多少个偶数上进行除法哦,是的,我的坏@giorgim.Fixed now@giorgim,更好吗?我同意,我只是坚持OP的想法,他们的代码应该做什么。是的@mrdeadsven,我会加上这个。最后一个示例数组的结果是错误的。0是偶数,平均值应该是0。
function getEvenAverage(tab) {
var sum = 0, count = 0;
for (var i = 0; i < tab.length; i++) {
if (i % 2 === 0) {
sum += parseInt(tab[i], 10);
count++;
}
}
if(sum > 0)
return (sum / count);
return null;
}