We can use the array function reduce for this:
We just also need to turn your data in milliseconds to days.
const data = [
  {
    "id": 9,
    "job_id": 302,
    "user_id": 63,
    "message": "User message 1",
    "created_at": 1584130559280
  },
  {
    "id": 10,
    "job_id": 302,
    "user_id": 63,
    "message": "User message 2",
    "created_at": 1584130559280
  },
  {
    "id": 14,
    "job_id": 302,
    "user_id": 63,
    "message": "Hello",
    "created_at": 1584216959280
  },
  {
    "id": 15,
    "job_id": 302,
    "user_id": 63,
    "message": "World",
    "created_at": 1584216959280
  }  
]
const groupedData = data.reduce((aggObj, child) => {
  const myDate = new Date(child.created_at);
  //console.log(myDate.toDateString());
  //console.log(myDate.getTime());
  if (aggObj.hasOwnProperty(myDate.toDateString())){
    aggObj[myDate.toDateString()].push(child);
  } else {
    aggObj[myDate.toDateString()] = [child];
  }    
  return aggObj
}, {})
console.log(groupedData);
.as-console-wrapper { max-height: 100% !important; top: 0; }
 
 
I changed the created_at values so the first two messages are from yesterday and the last two from today.
The output is:
{
  "Fri Mar 13 2020": [
    {
      "id": 9,
      "job_id": 302,
      "user_id": 63,
      "message": "User message 1",
      "created_at": 1584130559280
    },
    {
      "id": 10,
      "job_id": 302,
      "user_id": 63,
      "message": "User message 2",
      "created_at": 1584130559280
    }
  ],
  "Sat Mar 14 2020": [
    {
      "id": 14,
      "job_id": 302,
      "user_id": 63,
      "message": "Hello",
      "created_at": 1584216959280
    },
    {
      "id": 15,
      "job_id": 302,
      "user_id": 63,
      "message": "World",
      "created_at": 1584216959280
    }
  ]
}