function getBorders(min, max) {
var v = Math.pow(10, Math.floor(Math.log(Math.max(Math.abs(min), Math.abs(max))) / Math.log(10)));
return {
left: Math.floor(min / v) * v || 0,
right: Math.ceil(max / v) * v || 0
};
}
var values = [{ "min": 80, "max": 100 }, { "min": 23, "max": 42 }, { "min": 3, "max": 12 }, { "min": 0.1, "max": 0.156 }, { "min": 0.01, "max": 0.0156 }, { "min": 30, "max": 255 }, { "min": 1255, "max": 2784 }, { "min": 0.0023, "max": 0.00769 }, { "min": 0, "max": 0.002 }, { "min": 0, "max": 15000 }, { "min": -23, "max": 0 }, { "min": -123, "max": 2 }, { "min": 0, "max": 0 }];
values.forEach(function (a) {
var o = getBorders(a.min, a.max);
Object.keys(o).forEach(function (k) { a[k] = o[k]; });
});
console.log(values);