Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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/3/arrays/14.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_Arrays_Function_Math - Fatal编程技术网

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;ilog(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;
}