我得到了这个样本数据 .
"array" : [
{"Id" : "1", "preferred" : false},
{"Id" : "1", "preferred" : true },
{"Id" : "2", "preferred" : false},
{"Id" : "2", "preferred" : false},]
我想摆脱这样的事情 .
"array2":[{"Id": 1, numOfTrue: 1, numOfFalse: 1},{"Id": 2, numOfTrue: 0, numOfFalse: 2}]
到目前为止我得到的是一种如何获得唯一id形式初始数组的方法 .
const unique = [...new Set(array.map(item => Id))];
下一步将是一些forEach over array并比较Id值并为该布尔值设置一些计数器 . 因此,在我深入了解每个解决方案之前,我想问一下是否有其他方法可以使用 . filter()
和 .reduce()
方法 .
1 回答
您可以使用
reduce()
构建一个键入Id
的分组对象 . 每次看到Id
再次增加相应键的值 . 最后,您的数组将是对象的Object.values()
: