节点 JS 通过减少获取 Nan 从 JSON 数组计算总和



我正在尝试使用 reduce 来做 JSON 数组中的求和。 和我得到的返回值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请运行代码并检查输出

帮助将不胜感激。

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);

您还应该指定种子(第二个化简的参数(。否则,第一个数组元素将被视为默认种子,因此在您的情况下,您将在第一次迭代后获得600,但随后该值作为bid传递,因此您尝试读取类似600.bidAmount(bid.bidAmount(之类的内容,这毫无意义,因此您得到了NaN

这不是一个 NodeJS 问题,而是一个 JavaScript 问题。检查您的归约函数。参考 MDN,您可以看到缩减的第一个参数是累加器。您正在使用默认定义为 0 的 bid,并尝试访问其"出价金额"属性,从而导致 NaN。

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

最新更新