获取数组之和

时间:2018-10-08 16:32:54

标签: javascript

我有一个数字数组 [350000,350000,350000]

我有以下代码:

function getNPV(rate, periods, Cashflow) {
    var npv = 0;
    for (var i = 0; i < Cashflow.length; i++) {
        npv += Cashflow[i] / Math.pow(1 + rate, periods);
    }
    return npv;
}

在这里,现金流量是我们的数组,利率= 6%,期限= 91天。

当我服用时:

 npv = Cashflow[i] / Math.pow(1 + rate, periods);

每次对350000施加6%的折扣率时,输出为[348328,346664,344952]。

我正在尝试提取[348328,346664,344952]的总和,即$1,039,944 但是,结果是给了我$1034856

尝试使用控制台,实际上是将3rd值的总和取3次。 [344952 + 344952 + 344952]由于某种原因。

有人可以告诉我如何解决此错误。任何帮助表示赞赏。谢谢。

CODE

Logic

2 个答案:

答案 0 :(得分:0)

我指的是您的电子表格,您需要一个用于期间而不是现金流量的数组。

通过期和现金流量,例如:

var periods = [30, 60, 91];
var cashflow = 350000;
getNPV(rate, periods, cashflow);

您的现金流是相同的,因此不需要数组(如果要改变现金流,您可能仍然有数组)

并在循环中使用它:

function getNPV(rate, periods, Cashflow) {
    var npv = rate;

    for (var i = 0; i < periods.length; i++) {
        npv += Cashflow / Math.pow(1 + rate, periods[i]);
    }
    return npv;
}

答案 1 :(得分:0)

您可以使用returnSum来获取数组的总和

function returnSum(arr) {

  function sum(a, b) {
    return a + b;
  }
  return arr.reduce(sum, 0);
}

let array = [348328,346664,344952]

returnSum(array); //result 1039944

相关问题