печатать гистограмму в javascript? - PullRequest
0 голосов
/ 16 июня 2019

У меня есть запрос, который проверяет размер в килобайтах моих документов коллекции монго, который выглядит следующим образом:

db.myCollection.find().forEach(function(obj)
{
  var size = Object.bsonsize(obj)
  print('document id: ' + obj._id + ' size: ' + size/1024)
});

и печатает:

document id: 57b6e0561a7b8900011bafhr size: 463.248046875

но я хочу напечатать гистограмму, которая выглядит следующим образом:

bigger than 100kb -> 1,000,000 docs
bigget than 200kb -> 500,000 docs
bigger than 300kb -> 300,000 docs 
...

max doc 750kb

как я могу сделать это в JavaScript?

1 Ответ

0 голосов
/ 16 июня 2019

Вы можете попробовать что-то простое, например:

// an array of 100 random numbers 0-100
var arr = []; 
for(var i=0;i<100;i++) 
   arr.push(Math.random()*100)

// reducing the array to "histogram"
// does not create empty bins
arr.reduce(function(acc,cur){ 
   var k = Math.floor(cur/10)*10; // creates bins of 0-9, 10-19, 20-29,..., 90-99
   if (!(k in acc)) acc[k]=0;     // creates a bin if neccessary
   acc[k]++;                      // increments the bin
   return acc;
},[]);

Вывод (ключи обозначают ячейки, значения - количество элементов):

0: 10
10: 12
20: 4
30: 8
40: 8
50: 10
60: 12
70: 12
80: 10
90: 14
...