我有一个数组,其中包含值。现在,我想找出值重复的频率。
我已经计算了值并创建了一个新数组。但是现在我不想使用新的数组作为基础,因为我已经将图的圆放入第一个数组中(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,
}]
答案 0 :(得分:0)
使用每个唯一的“值”作为键,计算对新“字典”对象的汇率:
{ “ 1300”:3, “ 1200”:1 }
使用字典中的计数更新原始数组。
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]);