I believe its in part because of your regex you have

 .map(value => value.trim().split(/\s+/))

the /\s+/ is grabbing every all white space in the output from what I tested

I wrote up a quick regex string that may help though it is a bit messy and likely wont catch everything. I tested it with the output your provided though and it did the job. So its worth a shot.

/(\d)*(\s)*(\w:)(\s)*(\d)*(\s)*(\w(\s)?)*/gim