Значение, связанное с каждым ключом, будет массивом, состоящим из всех элементов, которые привели к этому возвратному значению при передаче в обратный вызов.

function groupBy(array, callback) {

  return array.reduce((acc,cur) => {
    let key = callback(cur)
    acc[key] = acc[key] || [];
    acc[key].push(cur)
    return acc;
  },{})
  
}

const decimals = [1.3, 2.1, 2.4];

const floored = function(num) {
  return Math.floor(num);
};

console.log(groupBy(decimals, floored));
Wide-eyed Whale