gpt4 book ai didi

javascript - reduce() 方法从对象数组中返回 NaN

转载 作者:行者123 更新时间:2023-11-28 17:25:24 27 4
gpt4 key购买 nike

我想使用 reduce() 获取总票数,但我总是收到 NaN结果,不是 20。

我有以下js代码:

 const choiseArray=[
{choice: "Shooter",url:"/questions/10/choices/01",votes:3},
{choice: "Shooter2",url:"/questions/10/choices/02",votes:2},
{choice: "Shooter3",url:"/questions/10/choices/03",votes:4},
{choice: "Shooter3",url:"/questions/10/choices/03",votes:11},
];
const reducer = (accumulator, currentValue) => parseInt(accumulator.votes) + parseInt(currentValue.votes);

const totalVotes= choiseArray.reduce(reducer);

console.info(totalVotes);

你能告诉我我做错了什么以及为什么吗?

最佳答案

您当前的问题是:在第一次迭代中,您有 accumulator.votes + currentValue.votes,在第二次迭代中,accumulator 是现在是一个数字(计算结果),不再是一个对象,因此它没有属性votes,这就是为什么你得到NaN

解决方案:调用您的函数,将 0 作为 reduce 第二个参数传递,这将是累加器,然后在您的函数中将值求和到其中,而不访问 accumulator.votes.

const choiseArray = [{
choice: "Shooter",
url: "/questions/10/choices/01",
votes: 3
},
{
choice: "Shooter2",
url: "/questions/10/choices/02",
votes: 2
},
{
choice: "Shooter3",
url: "/questions/10/choices/03",
votes: 4
},
{
choice: "Shooter3",
url: "/questions/10/choices/03",
votes: 11
},
];
const reducer = (accumulator, currentValue) => accumulator + parseInt(currentValue.votes);

const totalVotes = choiseArray.reduce(reducer, 0);

console.log("Total Votes: " + totalVotes);

关于javascript - reduce() 方法从对象数组中返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51755828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com