如果数组为空,JavaScript reduce返回null



我需要根据对象的类型对数组中的对象计数。我不知道我在这里错过了什么,但这就是我所做的:

myCounts = (myArray || []).reduce(function _countMembersByType(counts, member) {
  return counts[member.type === productType.GROUP ? 'groupCount' : 'individualCount']++;
}, {groupCount: 0 , individualCount: 0});

myArray有成员时,myCountsnull。否则,它将是一个myCounts: {"groupCount":0,"individualCount":0}的对象,正如我所期望的那样。

我是JS的新手,希望得到任何帮助!

你返回加 1'ing 的结果,所以在下一次迭代中,上一个或counts将是一个数字,而不是你的基对象。

您需要返回整个对象。

myCounts = (myArray || []).reduce(function _countMembersByType(counts, member) {
  counts[member.type === productType.GROUP ? 'groupCount' : 'individualCount']++;
  return counts;
}, {
  groupCount: 0,
  individualCount: 0
});

小提琴

最新更新