簡體   English   中英

JavaScript:計算奇數的平均值

[英]JavaScript: calculate the average of an odd number

我想從數字列表中計算奇數的平均值。 我有一個開始代碼來計算平均值,但是我不知道如何從列表中僅選擇奇數?

這是我的代碼:

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)

 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) 

您可以使用過濾器函數僅返回奇數:

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 

好吧,您可以由此獲得想要的東西。

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);

希望我的代碼對您有所幫助:)

您可以使用函數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); 

假設數字位於一個數組中,則可以執行以下操作:

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 最后,我們只是按sumcount sum

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;

您可以創建一個新數組並將奇數值存儲在該數組中,然后將邏輯應用於該數組。

 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); 

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM