首页 > 解决方案 > 无法在 foreach 循环中对集合中的值求和

问题描述

我的愿望是计算整个总和,然后除以迭代,以创建我可以显示的平均温度。

我已经尝试过 reduce* 方法,但它不能与用于获取温度值的观察值一起使用。

async function updateObservationList() {
    const url = "/api/get-all-observations";
    const response = await fetch(url);
    const data = await response.json();

    const tableBody = document.getElementById("table-body");
    const averageTemperature = document.getElementById("averageTemperature");

    const selector = document.getElementById("stationSelector").value;

    let sum = 0;
    let iteration = 0;

    removeElements();

    data.forEach(observation => {
        if(selector == 0) {

            /**
             * Sums temperature of all selected observations and divides it by the number of iterations,
             * thereby getting the average temperature
             */

            sum += observation.temperature;
            iteration++;
            console.log(sum)
            console.log(iteration)

            averageTemperature.textContent = (sum /= iteration).toString();

在此处输入图像描述 结果 这就是控制台中发生的事情。

我得到这个结果。

在此处输入图像描述

consol.log(数据) 在此处输入图像描述

控制台日志(数据) 在此处输入图像描述

控制台日志(观察)

标签: javascript

解决方案


我只是尝试重新创建场景,您的代码工作正常。

const selector = document.getElementById("stationSelector").value;
const averageTemperature = document.getElementById("averageTemperature");
let sum = 0;
let iteration = 0;

data = [{
  temperature: 27
}, {
  temperature: 32
}, {
  temperature: 25
}, {
  temperature: 28
}, {
  temperature: 22
}, {
  temperature: 21
}]


data.forEach(observation => {
  if (selector == 0) {
    /**
     * Sums temperature of all selected observations and divides it by the number of iterations,
     * thereby getting the average temperature
     */

    sum += observation.temperature;
    iteration++;
  }
})
averageTemperature.textContent = (sum /= iteration).toString();
<input type="number" value="0" id="stationSelector">
<p id="averageTemperature"></p>


推荐阅读