JavaScript:计算奇数的平均值

时间:2018-03-15 11:28:40

标签: javascript arrays numbers average

我想从数字列表中计算奇数的平均值。我有一个计算平均值的起始码,但我不知道如何才能从列表中选择奇数?

这是我的代码:

var numberArray = [1,2,3,4,5,6], thisTotal=0,thisAverage=0;

for (var i=0; i<numberArray.length; i++) {
    thisTotal += numberArray[i];
}

thisAverage = (thisTotal/numberArray.length);

alert(thisAverage)

8 个答案:

答案 0 :(得分:0)

var numberArray=[1,2,3,4,5,6], thisAverage=0,oddlength=0;

for(var i=0;i<numberArray.length;i++)
{
if(numberArray[i]%2!==0){
thisAverage+=numberArray[i];
oddlength++;
}
}

thisAverage=(thisAverage/oddlength);

alert(thisAverage)

答案 1 :(得分:0)

您可以使用filter函数仅返回奇数:

var oddArray = numberArray.filter(function(val) {
  return val % 2 !== 0;
});

完整示例:

var numberArray = [1, 2, 3, 4, 5, 6];
var thisTotal = 0;
var thisAverage = 0;

var oddArray = numberArray.filter(function(val) {
  return val % 2 !== 0;
});
console.log(oddArray); // [1, 3, 5]

var thisTotal = oddArray.reduce(function(accumulator, currentValue) { return  accumulator + currentValue;
});
console.log(thisTotal); // 1 + 3 + 5 => 9

var thisAverage = thisTotal / oddArray.length;
console.log(thisAverage); // 9 / 3 => 3

答案 2 :(得分:0)

嗯,你可以得到你想要的东西。

var numberArray=[1,2,3,4,5,6], thisTotal=0,thisAverage=0;

for(var i=0; i < 3; i++) {
  thisTotal += numberArray[i * 2];

  thisAverage= (thisTotal/numberArray.length);
}

console.log(thisAverage);

或者如果您想要一般解决方案,请使用此功能。

var numberArray=[1,2,3,4,5,6,7,8,...on and on], thisTotal=0,thisAverage=0;

for(var i=0; i < Math.ceil(numberArray.length() / 2); i++) {
  thisTotal += numberArray[i * 2];

  thisAverage= (thisTotal/numberArray.length);
}

console.log(thisAverage);

希望我的代码有用:)

答案 3 :(得分:0)

您可以使用reduce功能添加和计数。

var numberArray = [1, 2, 3, 4, 5, 6],
    result = numberArray.reduce((a, n) => {
      if (n % 2 !== 0) {
        a.sum += n;
        a.count++;
      }
      
      return a;
    }, {sum: 0, count: 0}),
    average = result.sum / result.count;

console.log(average);

答案 4 :(得分:0)

假设数字在数组中,您可以这样做:

var numbers = [1, 2, 3, 4, 5, 6];
var info = numbers.filter(function(n) { return n % 2 !== 0})
                 .reduce(function(acc, item) {
                     return {sum: acc.sum + item, count: acc.count + 1}
                 }, {sum: 0, count: 0});
var avg = info.sum / info.count;

此示例使用filterreduce方法,这些方法是声明性的,更清晰。 filter返回一个新数组,其中包含函数返回true的项目,然后reduce,对于每个项目,更新“累加器”。累加器可以是任何东西,在这种情况下是一个具有数字和它们的数量之和的对象。对于每个项目,我们添加将当前数字添加到sum属性,并将{1}添加到count。最后,我们只需sum count并完成。

答案 5 :(得分:-1)

var acc = 0, oddCount = 0;
for(var i = 0; i < numberArray.length; i++) {
    if(numberArray[i] % 2 !== 0) {
      acc += numberArray[i];
      oddCount++;
    }
}

return acc / oddCount;

答案 6 :(得分:-1)

您可以创建一个新数组并在该数组中存储奇数值,之后您可以将逻辑应用于该数组。

var a=[1,2,3,4,5,6,10,11];
var ar=[];
for (var i = 0; i < a.length; i++) {
    if(a[i] % 2 !== 0) {
        ar.push(a[i]);      
    }  
}
 console.log(ar);

答案 7 :(得分:-1)

var numberArray=[1,2,3,4,5,6,7,8];
        var count = 0;
        var result = 0;
        for (let i = 0; i <= (numberArray.length-1); i++)
        {
            if (numberArray[i] % 2 != 0)
            {
                result += numberArray[i];
                count++;
            }
        }

        alert(result / count);