const defaultStep = 10;
const initialData = {"87.0":5,"94.0":4,"80.0":3,"64.0":3,"17.0":3,"59.0":3,"52.0":3,"40.0":3,"48.0":3,"100.0":3,"1.0":2,"23.0":2,"24.0":2,"25.0":2,"3.0":2,"31.0":2,"36.0":2,"37.0":2,"38.0":2,"39.0":2,"46.0":2,"55.0":2,"61.0":2,"65.0":2,"70.0":2,"73.0":2,"85.0":2,"88.0":2,"89.0":2,"91.0":2,"95.0":2,"96.0":2,"99.0":2,"2.0":1,"53.0":1,"93.0":1,"58.0":1,"18.0":1,"6.0":1,"60.0":1,"14.0":1,"62.0":1,"63.0":1,"16.0":1,"12.0":1,"22.0":1,"66.0":1,"7.0":1,"97.0":1,"28.0":1,"71.0":1,"72.0":1,"33.0":1,"34.0":1,"35.0":1,"98.0":1,"76.0":1,"78.0":1,"8.0":1,"4.0":1,"21.0":1,"43.0":1,"45.0":1,"15.0":1,"20.0":1,"49.0":1,"51.0":1};
// const newData = {'5': 2, '66': 5, '5': 1, '16': 0, '67': 1};
const newData = {
'0': 1,
'5': 3,
'10': 1,
'15': 0,
'20': 1,
'25': 0,
'30': 0,
'35': 0,
'40': 3,
'45': 0,
'50': 0,
'55': 0,
'60': 0,
'65': 0,
'70': 1,
'75': 0
};
const getValueGraphData = (data = {}) => {
return Object.entries(data).map(([key, value]) => ({[key]: value}));
};
const getIntervalGraphData = (data, step) => {
// const steps = Object.keys(data).filter(item => +item % step === 0).map(item => +item).sort((a, b) => a - b);
// console.log(Object.keys(data).sort((a, b) => a - b))
const calculatedData = Object.keys(data).sort((a, b) => a - b).reduce((acc, el) => {
let value = 0;
if (+el) {
value = (el % step) ? el / step : (el - 1) / step;
}
const min = Math.floor(value);
const max = min + 1;
if (!acc[min]) {
// console.log()
acc[min] = {
min: !min ? min * step : min * step + 1,
max: max * step,
values: [el],
total: data[el] ? 1 : 0
};
} else {
acc[min] = {
...acc[min],
total: acc[min].total + (data[el] ? 1 : 0),
values: [...acc[min].values, el]
};
}
return acc;
}, {});
return Object.entries(calculatedData).map(([key, {min, max, total, values}]) => ({key, min, max, total, values}));
};
const data = getIntervalGraphData(newData, 5);
// const values = Object.entries(data).map(([_, value]) => value.total / defaultStep);
// const values = Object.entries(data).map(([key, {min, max, total}]) => ({[key]: {min, max, total}}));
const maxValue = data.reduce((acc, item) => {
// const key = Object.keys(item)[0];
const average = item.value / defaultStep;
if (average > acc) {
return average;
}
return acc;
}, 0);
console.log('data: ', data);
// console.log('values: ', values);
console.log('maxValue :', maxValue);
const roundValue = (value, digit = 1) => {
const stringifiedValue = String(value);
const a = stringifiedValue.split('.');
const roundedPard = digit >= a[1].length ? a[1] : a[1].slice(0, digit);
const resultValue = `${a[0]}.${roundedPard}`;
return +resultValue;
};
// console.log(roundValue(1.490000000000, 2))
// console.log(getValueGraphData(newData, defaultStep));
function fib(n) {
if (n <= 2) {
return n-1;
}
return [
...fib(n-1) + ...fib(n-2)
]
}
// 0 1 1 2 3 5 8 13