JSFiddle - React, Tailwind, and code Playground

JavaScript

var data = [{
  number: 1,
  text: 123
}, {
  number: 1,
  text: 321
}, {
  number: 2,
  text: 888
}, {
  number: 3,
  text: 000
}];

var result = [{
  number: 1,
  messages: [{
    text: 123
  }, {
    text: 321
  }]
}, {
  number: 2,
  messages: [{
    text: 888
  }]
}, {
  number: 3,
  messages: [{
    text: 000
  }]
}]

let h = []
let r = data.reduce((r, o) => {
	if (h[o.number] !== undefined) {
  	r[h[o.number]].messages.push({ text: o.text })
  } else {
  	r.push({ number: o.number, messages: [{ text: o.text }] })
    h[o.number] = r.length - 1
  }
  return r
}, [])

console.log(r)