return foo(a,b)
var result = array.reduce((previous, current) => {
if (previous.hasOwnProperty(current)) {
previous[current]++;
} else {
previous[current] = 1;
}
return previous;
}, {});
input = Array.isArray(input) ? input: [input];
// дальше работаем с input как с массивом