The following code allows to count each occurrence in an array by returning an array of array :
var a = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4];
var result = [...a.reduce( (m, v) => m.set(v, (m.get(v) || 0) + 1), new Map() )];
console.log(result);
Result : [ [ 5, 3 ], [ 2, 5 ], [ 9, 1 ], [ 4, 1 ] ]
As reduce function takes previousValue, currentValue, currentIndex, array, does it mean :
m = previousValue
v = currentValue
new Map() = array ?
I can't crack the logic here.
Thanks