首页 > 解决方案 > for 循环遍历 index[0] 两次

问题描述

我正在使用 for 循环遍历一个数组并将所有值相加。一切正常,但由于某种原因,它通过 index[0] 两次(附加控制台的屏幕截图)。有人可以帮忙吗?我只想通过 index[0] 一次。我正在使用javascript进行反应。

ffunction getCo2consump(){
  var co2Consump =[]; //this needs to be updated to be the co2consump from db later
  //get consump from databse
  var combinedConsump = 0;
  var i;
  database
  .collection("Users")
    .doc(email)
    .collection("ChosenChallenge")
    .get()
    .then((snapshot) => {
      snapshot.docs.forEach((doc) => {
        co2Consump.push(doc.data().Co2Consumption);
        for (i=0; i< co2Consump.length; i++){
          console.log("this is i", i);
          console.log("this is co2consump in loop", co2Consump[i]);
          console.log(typeof co2Consump[i]);
          combinedConsump = combinedConsump + co2Consump[i];
          console.log(typeof combinedConsump);

        }
      });
      console.log("this is co2Consump array", co2Consump)
      console.log("this is combined", combinedConsump)
      return combinedConsump;
})
}

控制台截图 在此处输入图像描述

标签: javascriptreactjsloops

解决方案


for循环位于循环内部forEach,因此它将i=0为您集合中的每一项设置。您需要计算您的总 CO2 消耗量forEach

function getCo2consump(){
  var co2Consump =[]; //this needs to be updated to be the co2consump from db later
  //get consump from databse
  var combinedConsump = 0;
  var i;
  database
  .collection("Users")
    .doc(email)
    .collection("ChosenChallenge")
    .get()
    .then((snapshot) => {
      snapshot.docs.forEach((doc) => {
        co2Consump.push(doc.data().Co2Consumption);
        }
      });
      co2Consump.forEach(e=>combinedConsump+e);
      console.log("this is co2Consump array", co2Consump)
      console.log("this is combined", combinedConsump)
      return combinedConsump;
})
}

推荐阅读