代码之家  ›  专栏  ›  技术社区  ›  abbas_arezoo

从循环中的值创建新数组,然后对新数组中的所有值求和

  •  0
  • abbas_arezoo  · 技术社区  · 5 年前

    我有一个有多行的表单,用户可以在其中输入数字和计算输出。

    我现在可以计算每行的输出-小计。但希望能够计算出所有的小计-合计。

    我可以将每个小计记录到控制台中,但无法计算出如何求和这些值。在阅读了一些类似的问题之后,我认为我需要创建一个值数组并求和这些值。

    是否可以使用我当前使用的循环?

    以下是我目前拥有的:

    const rows = document.querySelectorAll('.row');
    const calculate = document.querySelector('.calculate');
    const output = document.querySelector('.output');
    
    // Calculate
    
    function calculateSubTotal() {
    
      rows.forEach(function(row, index){
        const input1Val = Number(row.querySelector('.input-1').value);
        const input2Val = Number(row.querySelector('.input-2').value);
    
        const subTotal = input1Val + input2Val;
    
        console.log(subTotal);
      });
    
    }
    
    calculate.addEventListener('click', calculateSubTotal);
    

    这是一支钢笔: https://codepen.io/abbasarezoo/pen/WBXjWO?editors=1111

    1 回复  |  直到 5 年前
        1
  •  1
  •   Maheer Ali    5 年前

    在外部声明变量 forEach 在里面增加 前臂

    function calculateSubTotal() {
      let total = 0;
      rows.forEach(function(row, index){
        const input1Val = Number(row.querySelector('.input-1').value);
        const input2Val = Number(row.querySelector('.input-2').value);
    
        const subTotal = input1Val + input2Val;
    
        console.log(subTotal);
        total += subTotal 
      });
    
    }
    

    使用的代码的简化版本 reduce() map()

    function calculateSubTotal() {
      let total = 0;
      let subTotals = rows.map(x => +x.querySelector('.input-1').value + +x.querySelector('.input-2').value)
      let total = subTotals.reduce((ac,a) => ac + a,0)
    }