Search code examples
javascriptarraysdictionaryarray-map

JavaScript array to dictionary conversation based on count


I have a array like below

 data = [A,B,B,B,C,C,A,B]

How can I convert into dictionary like below format.

  data = [
  {
    name: "A",
    y: 2
  },
  {
    name: "B",
    y: 4
  },
  {
    name: "C",
    y: 2
  }
]

Have to convert elements as names and count of the elements as value to y.

I've a library which accepts only in that format. Not able to do, stuck in the middle

Any suggestions are welcome.


Solution

  • function convert(data){
      var myMap = {}
      data.forEach(el => myMap[el] = myMap[el] != undefined ? myMap[el] + 1 : 1);
      return Object.keys(myMap).map(k => {return {name: k, y: myMap[k]}})
    }
    
    console.log(convert(['A','B','B','B','C','C','A','B']))