js实现统计
JavaScript 实现数据统计
使用 JavaScript 进行数据统计可以涵盖多种场景,包括基础统计计算、数据聚合、可视化等。以下是常见的实现方法:
基础统计计算
计算数组的平均值、总和、最大值、最小值等基础统计量:
const data = [1, 2, 3, 4, 5];
// 平均值
const mean = data.reduce((acc, val) => acc + val, 0) / data.length;
// 总和
const sum = data.reduce((acc, val) => acc + val, 0);
// 最大值
const max = Math.max(...data);
// 最小值
const min = Math.min(...data);
计算方差和标准差
方差和标准差是衡量数据离散程度的重要指标:
// 方差
const variance = data.reduce((acc, val) => acc + Math.pow(val - mean, 2), 0) / data.length;
// 标准差
const stdDev = Math.sqrt(variance);
频率统计
统计数组中各元素出现的频率:

const freq = data.reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
使用第三方库
对于更复杂的统计需求,可以使用专门的统计库,如 simple-statistics:
import ss from 'simple-statistics';
const median = ss.median(data);
const mode = ss.mode(data);
const skewness = ss.sampleSkewness(data);
数据聚合
使用 Array.prototype.reduce 进行数据聚合:

const sales = [
{ product: 'A', amount: 100 },
{ product: 'B', amount: 200 },
{ product: 'A', amount: 150 }
];
const totalByProduct = sales.reduce((acc, { product, amount }) => {
acc[product] = (acc[product] || 0) + amount;
return acc;
}, {});
可视化统计结果
结合图表库(如 Chart.js)展示统计结果:
import Chart from 'chart.js';
const ctx = document.getElementById('myChart').getContext('2d');
new Chart(ctx, {
type: 'bar',
data: {
labels: Object.keys(totalByProduct),
datasets: [{
label: 'Sales by Product',
data: Object.values(totalByProduct)
}]
}
});
时间序列统计
统计时间序列数据的趋势或周期性:
const timeSeries = [
{ date: '2023-01-01', value: 10 },
{ date: '2023-01-02', value: 20 }
];
const dailyAvg = timeSeries.reduce((acc, { date, value }) => {
const day = new Date(date).getDay();
acc[day] = (acc[day] || { sum: 0, count: 0 });
acc[day].sum += value;
acc[day].count++;
return acc;
}, {});
Object.keys(dailyAvg).forEach(day => {
dailyAvg[day] = dailyAvg[day].sum / dailyAvg[day].count;
});
大数据集统计
对于大型数据集,考虑使用 Web Workers 或分批处理以避免阻塞主线程:
// 在主线程中
const worker = new Worker('stats-worker.js');
worker.postMessage({ data: largeDataset });
worker.onmessage = (e) => console.log(e.data.result);
// 在 stats-worker.js 中
self.onmessage = (e) => {
const result = calculateComplexStats(e.data.data);
self.postMessage({ result });
};
以上方法涵盖了从基础到高级的 JavaScript 统计实现,可根据具体需求选择适合的方案。对于生产环境,建议使用成熟的统计库以确保准确性和性能。






