【问题标题】:reducing subarrays numbers in Javascript with reduce()使用 reduce() 减少 Javascript 中的子数组数量
【发布时间】:2020-05-11 14:30:25
【问题描述】:

我想要做的是与以下解决方案相同,但用 reduce 函数替换整个代码。我当前的代码是:

function reduce2dArr(cash) {
    let cashList = [];
     cash.forEach(subArr => cashList.unshift(subArr[1]));
    let globalcash = cashList.reduce((a, b) => a + b);  
    return globalcash;
  } 

  reduce2dArr([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]); //335.41

我已经试过了:

function reduce2dArr(cash) {
    let globalcash = cash.reduce((subArr1, subArr2) => subArr1[1] + subArr2[1])
    return globalcash;
  } 

  reduce2dArr([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]); // NaN

在调试器中我可以看到 reduce 只有第一次迭代 (3.05) 才能正常工作

谢谢!

【问题讨论】:

    标签: javascript arrays function ecmascript-6


    【解决方案1】:

    您需要一个起始值,因为您添加了数组的一部分并返回一个数字。

    这个数字是下一个值,但这不是从中获取第二个元素的数组。

    function reduce2dArr(cash) {
        return cash.reduce((sum, subArray) => sum + subArray[1], 0);
    }
    
    console.log(reduce2dArr([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]));

    通过使用数组作为累加器,您需要返回一个数组以获取两个子数组的第二个元素。

    function reduce2dArr(cash) {
        return cash
            .reduce((subArray1, subArray2) => [null, subArray1[1] + subArray2[1]])
            [1]; // take only the sum
    }
    
    console.log(reduce2dArr([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]));

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 2021-03-26
      • 2023-02-24
      • 2016-10-07
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      相关资源
      最近更新 更多