Function with underscore overuse The code below is converting: data from one format to another

# input sample
{
  productText: [
    {
      "language": "en",
      "version": "1",
      "sequence": 1,
      "text": "blah",
      "textType": "ROMANCE"
    }
  ]
}

# output sample
{
  productText: [
    {
      sequence: 1,
      textType: "ROMANCE"
      text: [
        {
          text: "blah",
          language: "en",
          version: "1",
        }
      ]
    }
  ] 
} 


The source:

deserialize: (profileJSON)-&gt;
  return profileJSON unless profileJSON.productText?
  profileJSON.productText = _(profileJSON.productText).reduce(
    (acc, el)-&gt;
      current  = _(acc).findWhere(
        _(el).pick('sequence', 'textType')
      )
      unless current?
        current = _(el).pick('sequence', 'textType')
        current.text = []
        acc.push(current)
      current.text.push(
        _(el).pick('version', 'text', 'language')
      )
      return acc
    []
  )
  return profileJSON


My colleague said that I overuse underscore. Is he right? Is it a good piece of code?
Interesting question,

I am not sure there is such a thing as over-use of underscore, and what the drawback would be. I think that code looks okay from that perspective.

However, from a once over:


deserialize as a function name is unfortunate, especially since it does not deserialize JSON
profileJSON is equally unfortunate, it does not contain JSON
This seems out of order, and a roundabout way of doing things:

current.text = []
acc.push(current)
current.text.push(
  _(el).pick('version', 'text', 'language')
)


could be more like

current.text = [ _(el).pick('version', 'text', 'language') ]
acc.push(current)

You are wrapping el 3 times, wrap it once and assign it to a variable, perhaps that is what your colleague meant?
You call _(el).pick('sequence', 'textType') twice, again you should have cached this, see above
acc and el are meaningless variables and don't give me any insight as to what is inside productText