【问题标题】:Node JS Calculate Sum From JSON Array By Reduce Getting NanNode JS通过减少获取Nan计算JSON数组的总和
【发布时间】:2019-12-03 11:17:19
【问题描述】:

我正在尝试使用 reduce 在 JSON Array 中求和。以及我得到的返回值NAN

请任何人帮我检查我的代码是否正确。

她是我的密码

const reduceBids = [ { id: 'd4f82532-d38a-421f-81d5-795dcfc7cd70',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: 'f4631745-7181-4d9c-92ce-948751fa7e14',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: 'bc9b172d-b8a2-48bd-8605-a13e9536dc00',
    bidAmount: 300,
    fullName: 'Venkatesh' },
  { id: '44422594-e69d-48cb-b8d1-7493b5275e26',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: '747cb11d-1306-4638-b90e-cc197c3648e7',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: '879364ba-d672-4ad9-a4b8-2cc29c3c912a',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: '9bbb3ee3-7f27-4743-aa3e-553e399dce9a',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: '4a7026c3-0688-42a7-bfe7-cbb733dcb656',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: '7918cb18-0951-40b9-a687-7bb4a03d5bec',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: 'b94b4f57-41c2-442e-85ae-d3ddceaaa985',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 300,
    fullName: 'Hanuman' },
  { id: 'acfff167-3b71-4f60-a229-95b5444e25e9',
    vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
    userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
    bidAmount: 200,
    fullName: 'Hanuman' } ];

 const total = reduceBids.reduce((bid, currentBid) => {  
        return bid.bidAmount + currentBid.bidAmount;
});   

console.log(total);

我需要计算bidAmount 的总金额,而不是总数。

我收到NAN 请运行代码并检查输出

我们将不胜感激。

【问题讨论】:

    标签: javascript node.js reduce


    【解决方案1】:

    Reduce 函数的第一个参数表示在上一步中计算的值(累加器),因此您的代码应如下所示:

    const reduceBids = [ { id: 'd4f82532-d38a-421f-81d5-795dcfc7cd70',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: 'f4631745-7181-4d9c-92ce-948751fa7e14',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: 'bc9b172d-b8a2-48bd-8605-a13e9536dc00',
        bidAmount: 300,
        fullName: 'Venkatesh' },
      { id: '44422594-e69d-48cb-b8d1-7493b5275e26',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: '747cb11d-1306-4638-b90e-cc197c3648e7',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: '879364ba-d672-4ad9-a4b8-2cc29c3c912a',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: '9bbb3ee3-7f27-4743-aa3e-553e399dce9a',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: '4a7026c3-0688-42a7-bfe7-cbb733dcb656',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: '7918cb18-0951-40b9-a687-7bb4a03d5bec',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: 'b94b4f57-41c2-442e-85ae-d3ddceaaa985',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 300,
        fullName: 'Hanuman' },
      { id: 'acfff167-3b71-4f60-a229-95b5444e25e9',
        vehicleId: '20f3f453-774c-4e4e-9dd6-a3b3468e42f4',
        userId: '0d7a45e7-3483-4cc6-95b0-12e551002a7a',
        bidAmount: 200,
        fullName: 'Hanuman' } ];
    
     const total = reduceBids.reduce((bid, currentBid) => {  
            return bid + currentBid.bidAmount;
    }, 0);   
    
    console.log(total);

    您还应该指定种子(第二个reduce 的参数)。否则第一个数组元素将被视为默认种子,因此在您的情况下,您将在第一次迭代后获得600,但随后该值将作为bid 传递,因此您尝试读取类似600.bidAmountbid.bidAmount ) 这没有任何意义,因此您会得到NaN

    【讨论】:

      【解决方案2】:

      这不是 NodeJS 问题,而是 javascript 问题。检查您的减少功能。参考MDN可以看到reduction的第一个参数是累加器。您正在使用默认定义为 0 的出价,并尝试访问其“出价金额”属性,导致 NaN。

      删除后缀并在总和中仅使用bid,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 2019-07-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        相关资源
        最近更新 更多