【发布时间】:2021-10-25 20:58:30
【问题描述】:
所以我有这个对象数组,我需要根据每个对象的 prop 值来减少它们并计算总数。
我的意思是,假设我有这个对象数组:
[
{ dateTime: '2021-07-30', count: 4 },
{ dateTime: '2021-07-31', count: 1 },
{ dateTime: '2021-08-01', count: 2 },
{ dateTime: '2021-08-02', count: 1 },
{ dateTime: '2021-08-03', count: 2 },
{ dateTime: '2021-08-04', count: 3 }
]
我想把它简化成这样:
[
{ month: '2021-07', count: 5 },
{ month: '2021-08', count: 8 }
]
这是sn-p:
const data = [{
dateTime: '2021-07-30',
count: 4
},
{
dateTime: '2021-07-31',
count: 1
},
{
dateTime: '2021-08-01',
count: 2
},
{
dateTime: '2021-08-02',
count: 1
},
{
dateTime: '2021-08-03',
count: 2
},
{
dateTime: '2021-08-04',
count: 3
}
];
const stackedMonths = data.reduce((acc, curr) => {
return [{
month: curr.dateTime.slice(0, 7),
count: acc + curr.count
}];
}, []);
console.log(stackedMonths);
在尝试了代码之后,我得到了这个没有任何意义的:
[ { month: '2021-08', count: '[object Object]2' } ]
我在这里做错了什么?请注意,我是减少的新手,我仍在学习它。
【问题讨论】:
-
在这一行,
count: acc + curr.count、acc是一个对象。当你连接一个对象和一个数字时,你会得到一个字符串(除非你有一个返回数字的对象的 toValue 方法。)你肯定不打算把一个对象和一个数字连接起来吗? -
不,我没有。我正在从 SO 中的各种答案中自己尝试一下。但是 acc 不是数组吗?
-
一个数组就是一个对象。您不能将数字添加到对象本身,因为对象不是数字(或任何形式的数字)。
-
@esqew 明白了。谢谢
-
它应该是一个数组,但如果是,你不会得到
[object Object]2。是的,数组是对象,但是数组以这种方式连接时会产生不同的结果
标签: javascript jquery arrays