J'ai créé un tableau en utilisant le JavaScript suivant:

for (i = 0; i < numOfPeriodsCost; i++) {
    esclatedPrice *= (1 + annualElecIncrease)
    rateArray.push(esclatedPrice);
    annualCostA = consumptionA * rateArray[i]
    console.log("annualCostA= " + annualCostA);
}

Pour le contexte:

var numOfPeriodsCost = 10;
var annualElecIncrease = 0.1;
var consumptionA = 520;

La console enregistre les éléments suivants pour annualCostA:

enter image description here

Comment pourrais-je aller plus loin et calculer la somme du tableau?

Merci

-1
JohnGIS 20 nov. 2018 à 12:47

7 réponses

Meilleure réponse

Dans votre boucle, il vous suffit d'ajouter une variable sum qui ajoutera la valeur de annualCostA à chaque itération comme ceci:

var sum = 0;
for (i = 0; i < numOfPeriodsCost; i++) {
    esclatedPrice *= (1 + annualElecIncrease)
    rateArray.push(esclatedPrice);
    annualCostA = consumptionA * rateArray[i]
    sum += annualCostA // add the annualCostA value in each iteration 
    console.log("annualCostA= " + annualCostA);
}
console.log(sum); //total sum
1
Ahsan Ali 20 nov. 2018 à 09:55

Je pense qu'il y a un problème avec votre calcul annuel, devrait-il être consumption + (years*increase*consumption)?

Vous pouvez mapper un tableau de 0-numOfPeriodsCost aux coûts annuels et le réduire à un tableau contenant les coûts pour cette année et le total jusqu'à cette année. Mappez ensuite ces valeurs en objets contenant le total et l'année:

const numOfPeriodsCost = 10;
const annualElecIncrease = 0.1;
const consumptionA = 520;

console.log(
  [...new Array(numOfPeriodsCost)]
    .map(
      (_, period) =>
        consumptionA +
        period * annualElecIncrease * consumptionA,
    )
    .reduce(
      ([sum, result], item) => [
        sum + item,
        result.concat([[sum + item, item]]),
      ],
      [0, []],
    )[1]
    .map(([total, year]) => ({ total, year })),
);
0
HMR 20 nov. 2018 à 10:26

Utilisation de Array.prototype.reduce () sur votre variable rateArray après la boucle:

var rateArray = [
    936,
    1029.6,
    1132.56
];

var arraySum = rateArray.reduce((total, e) => total + e);

console.log(arraySum)
0
Gary Thomas 20 nov. 2018 à 09:56

Vous pouvez utiliser Array.prototype.reduce ():

var sumOfRateArray = rateArray.reduce((a, c) => a + c, 0);

Code:

const rateArray = [12.100000000000001,13.310000000000002,14.641000000000004,16.105100000000004,17.715610000000005,19.487171000000007,21.43588810000001,23.579476910000015,25.937424601000018];
const sumOfRateArray = rateArray.reduce((a, c) => a + c, 0);

console.log(sumOfRateArray);
1
Yosvel Quintero 24 nov. 2018 à 02:42

Voici l'approche forEach:

let numbers = [1, 2, 3, 4];
let sum = 0;
numbers.forEach((item, index)=>{sum= sum + item;});
document.write("Sum: " + sum);

Test: lien

Doc: lien

0
Tu.ma 20 nov. 2018 à 09:59

Ajouter une variable somme avant la boucle let sum=0;

Ajoutez l'élément que vous souhaitez additionner à l'intérieur de la boucle sum+= your_element;

Imprimer le résultat console.log("Sum= "+sum);

0
Kristjan Kica 20 nov. 2018 à 09:51
var numOfPeriodsCost = 10;
var annualElecIncrease = 0.1;
var consumptionA = 520;

let sum = 0;

for (i = 0; i < numOfPeriodsCost; i++) {
  esclatedPrice *= (1 + annualElecIncrease);
  rateArray.push(esclatedPrice);
  annualCostA = consumptionA * rateArray[i]
  console.log("annualCostA= " + annualCostA);
  sum += annualCostA;
}

console.log('sum', sum);
0
Eugene Mihaylin 20 nov. 2018 à 09:56