score:1

Accepted answer

you can use set, its avoid duplicate values:

let ar = new set();
  data.map((item) => {
    ar.add(item.items.selecteditem);
  });

ar = array.from(ar); //convert set to array

edit: ok, for that i think its better to use:

let ar = {};
  for(let i=0; i<data.length; i++){
    if(ar[data[i].items.selecteditem] === undefined)
      ar[data[i].items.selecteditem] = 1;
    else
      ar[data[i].items.selecteditem]++;
  }

  let data_labels = object.keys(ar);
  let data_ = object.keys(ar).map(key => ar[key]);

and replace:

data={{
          labels: data_labels,
          datasets: [
            {
              data: data_,
              backgroundcolor: ["red", "yellow", "green", "blue", "pink"],
              bordercolor: ["rgba(255, 99, 132, 1)"],
              borderwidth: 1
            }
          ]
        }}

and for the backgroundcolor array you need to check the length of ar, and make an array of this size with different colors if you want.


Related Query

More Query from same tag