我怎样才能知道一个值在数组中出现的频率?

How can I find out, how often one Value is in an array?

我有一个数组,其中包含值。现在我想知道这些值重复的频率。

我已经计算了值并创建了一个新数组。但现在我不想使用新数组作为基础,因为我已经将图的圆圈放入第一个数组 (data[i].circle) 中,我也想在这种情况下使用它们。那么有没有什么办法可以使用旧数组并在图表中显示一个值出现的频率?例如:1300 在数组中出现了 3 次。

init();

function init() {
  paper = Snap("#svgContainer");

  for (i = 0; i < data.length; i++) {
    data[i].circle = paper.circle(0, 0, 1);
  }
}

function showDiagram() {
  var diagrammBreite = data.length * radius * 4;
  var offsetLeft = (paperWidth - diagrammBreite) / 2;
  radius = (diagrammBreite / data.length) / 4;

  for (i = 0; i < data.length; i++) {
    xPos = offsetLeft + (4 * radius * i);

    for (j = 0; j < data[i]; j++) {
      yPos = paperHeight - (j * radius * 3) - radius;
      data[i].circle.attr({
        cx: xPos,
        cy: yPos,
        r: radius,
        color: farbe
      })
    }
  }
}

//one example out of my data array
var data = [{
  "country": "Germany",
  "lastEruption": 1300,
}]
  1. 计算新 "dictionary" 对象的比率,使用每个唯一值作为键:

    { “1300”:3, “1200”:1, }

  2. 用字典中的计数更新原始数组。

var data = [
{
  "country": "Germany",
  "lastEruption": 1300,
},
{
  "country": "France",
  "lastEruption": 1300,
},
{
  "country": "Italy",
  "lastEruption": 1100,
},
];

// count
const counts = {};
data.forEach(el => {
  const value = el.lastEruption;
  if (counts[value]) counts[value]++;
  else counts[value] = 1;
});

// update
data.forEach(el => el.circle = counts[el.lastEruption]);