У меня есть пример массива, который я пытаюсь уменьшить на количество вхождений ключа (настроение в этом примере):
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
}, [])
}
И это почти там. Что я не могу понять, так это как заменить undefined
, когда нет оценок чувств 0
(что вполне возможно).
console.log('sentimentGrouped', sentimentGrouped(sentimentLog))
Выше приведено:
"sentimentGrouped" [undefined, 4, 3, 1]
Принимая во внимание, что я хотел бы:
"sentimentGrouped" [0, 4, 3, 1]
Чего мне не хватает?
Заранее спасибо.
Редактировать: Я уточню немного дальше, есть 4 баллы, которые будут возвращены (от 0 до 3). Возвращенные данные будут основаны на диапазоне дат. Так что могут быть случаи, когда не будет возвращено 1
с, аналогично 3
не будет возвращено в другом диапазоне дат.