gpt4 book ai didi

Javascript数组减少返回零而不是未定义

转载 作者:行者123 更新时间:2023-11-28 14:09:05 25 4
gpt4 key购买 nike

我有一个示例数组,我试图通过键的出现次数来减少它(本例中的情绪):

const sentimentLog = [
{
id: 1,
createdOn: new Date('2020-02-13'),
sentiment: 1
},
{
id: 2,
createdOn: new Date('2020-02-12'),
sentiment: 1
},
{
id: 3,
createdOn: new Date('2020-02-12'),
sentiment: 2
},
{
id: 4,
createdOn: new Date('2020-02-11'),
sentiment: 3
},
{
id: 5,
createdOn: new Date('2020-02-11'),
sentiment: 2
},
{
id: 6,
createdOn: new Date('2020-02-10'),
sentiment: 1
},
{
id: 7,
createdOn: new Date('2020-02-10'),
sentiment: 2
},
{
id: 8,
createdOn: new Date('2020-02-09'),
sentiment: 1
}
]

我正在使用:

const sentimentGrouped = (sentiments) => {
return sentiments.reduce((hash, { sentiment }) => {
hash[sentiment] = (hash[sentiment] || 0) + 1
return hash
}, [])
}

而且就快到了。我不知道的是,当情感分数没有 0 时(这是有可能的),如何替换 undefined

console.log('sentimentGrouped', sentimentGrouped(sentimentLog))

上面的结果是:

"sentimentGrouped" [undefined, 4, 3, 1]

而我想要:

"sentimentGrouped" [0, 4, 3, 1]

我错过了什么?

提前致谢。

编辑:我会进一步详细说明,将返回 4 个分数(0 到 3)。返回的数据将基于日期范围。因此,在某些情况下,可能不会返回 1,同样,不同日期范围也不会返回 3

最佳答案

问题是,如果您从未接触过数组的某个元素,那么它会保留为数组中的一个洞,这意味着它会被视为未定义。因为您知道数组的长度,所以我只需用零预先填充数组即可。任何确实发生的情绪分数都会增加。任何不这样做的都将保持其初始值。

return sentiments.reduce((hash, { sentiment }) => {
hash[sentiment] = hash[sentiment] + 1
return hash
}, [0, 0, 0, 0])

关于Javascript数组减少返回零而不是未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60228766/

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