JavaScript 数组到基于计数的字典对话

JavaScript array to dictionary conversation based on count

我有一个如下所示的数组

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

如何转换成如下格式的字典。

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

必须将元素转换为名称并将元素的计数转换为 y 的值。

我有一个图书馆只接受那种格式。 做不到,卡在中间

欢迎提出任何建议。

使用array.reduce:

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

var res = data.reduce((m, o) => {
  var found = m.find(e => e.name === o);
  found ? found.y++ : m.push({name: o, y: 1});
  return m;
}, []);

console.log(res);

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

var res = Array.from(new Set(data)).map(a =>
  ({name:a, y: data.filter(f => f === a).length}));

console.log(res);

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']))