Utility functions for JS Numbers.
- Source
Methods
(inner) average(numbers) → {number}
Returns the average of the numbers contained in the array numbers
Name | Type | Description |
---|---|---|
numbers | Array.<number> |
- Source
- Type:
- number
(inner) averageInc(newVal, oldAvg, n) → {number}
Returns the increase of the average of a (hypothetical) colletion when newVal
would be added to the collection.
Name | Type | Description |
---|---|---|
newVal | number | The value to "add" to the collection |
oldAvg | number | Average of a collection |
n | number | Number of elements in the collection |
- Source
- Type:
- number
(inner) backoff(attempt, base, cap) → {number}
Calculates the waiting time for attempt
according to exponential backoff.
Name | Type | Default | Description |
---|---|---|---|
attempt | number | Number of attempt | |
base | number | 5 | Wait time for the first try |
cap | number | 30000 | Maximum waiting time |
- Source
- Type:
- number
(inner) between(x, a, b, eps) → {boolean}
Returns wether x
is between a
and b
and keeps eps
distance from both of them.
Name | Type | Description |
---|---|---|
x | number | The number that should be between two bounds |
a | number | One bound (can be upper or lower) |
b | number | Another bound (can be upper or lower) |
eps | number | Epsilon value that indicates the distance that should be kept from the boundaries |
- Source
- Type:
- boolean
(inner) clamp(x, lower, upper) → {number}
Clamps x
between lower
and upper
, i.e. if x
is smaller than lower
, return lower
. If it is higher than upper
return upper
. If x
is between lower
and upper
, x
is returned.
Name | Type | Description |
---|---|---|
x | number | The number to clamp |
lower | number | The lower bound |
upper | number | The upper bound |
- Source
- Type:
- number
(inner) detent(n, detent, grid, snap) → {number}
This function is useful to implement smooth transitions and snapping.
Map all values that are within detent/2
of any multiple of grid
to that multiple. Otherwise, if snap
is true, return self, meaning that the values in the dead zone will never be returned.
If snap
is false, then expand the range between dead zone so that it covers the range between multiples of the grid, and scale the value by that factor.
Examples:
// With snapping:
num.detent(0.11, 0.2, 0.5, true) => 0.11
num.detent(0.39, 0.2, 0.5, true) => 0.39
num.detent(0.55, 0.2, 0.5, true) => 0.5
num.detent(0.61, 0.2, 0.5, true) => 0.61
// Smooth transitions without snapping:
num.detent(0.1, 0.2, 0.5) => 0
num.detent(0.11, 0.2, 0.5) => 0.0166666
num.detent(0.34, 0.2, 0.5) => 0.4
num.detent(0.39, 0.2, 0.5) => 0.4833334
num.detent(0.4, 0.2, 0.5) => 0.5
num.detent(0.6, 0.2, 0.5) => 0.5
Name | Type | Description |
---|---|---|
n | number | The number to detent |
detent | number | The width of the 'dead zone' around the grid |
grid | number | The width of the grid |
snap | boolean | Wether snapping is active |
- Source
- Type:
- number
(inner) humanReadableByteSize(n) → {string}
Interpret n
as byte size and return a more readable version. E.g. num.humanReadableByteSize(Math.pow(2,32))
returns "4096MB"
Name | Type | Description |
---|---|---|
n | number | The number of bytes |
- Source
- Type:
- string
(inner) interpolate(i, a, b) → {number}
Linearly interpolates between a
and b
to i
percent.
Name | Type | Description |
---|---|---|
i | number | Percentage to which the interpolation is done |
a | number | Start value of the interpolation |
b | number | End value of the interpolation |
- Source
- Type:
- number
(inner) median(numbers) → {number}
Returns the median of the numbers contained in the array numbers
Name | Type | Description |
---|---|---|
numbers | Array.<numbers> |
- Source
- Type:
- number
(inner) normalRandom(mean, stdDev) → {number}
Returns randomized numbers in a normal distribution that can be controlled using the mean
and stdDev
parameters
Name | Type | Description |
---|---|---|
mean | number | Mean of the distribution to use |
stdDev | number | Standard deviation of the distribution to use |
- Source
- Type:
- number
(inner) parseLength(string, toUnit) → {number}
This converts the length value string
to pixels or the specified toUnit
.
Supported units are: mm, cm, in, px, pt, pc.
Name | Type | Description |
---|---|---|
string | string | A string denoting a length (e.g. |
toUnit | string | A string denoting a supported unit (e.g. |
- Source
- Type:
- number
(inner) precision(f) → {number}
Given a float value f
, returns the number of decimals it has.
Name | Type | Description |
---|---|---|
f | number |
- Source
- Type:
- number
(inner) random(min, max) → {number}
Returns a random number between (and including) min
and max
.
Name | Type | Description |
---|---|---|
min | number | |
max | number |
- Source
- Type:
- number
(inner) randomSmallerInteger(n) → {number}
Returns a random, whole number smaller than n
Name | Type | Description |
---|---|---|
n | number | Exclkusive upper bound of the number to return |
- Source
- Type:
- number
(inner) roundTo(n, quantum) → {number}
Rounds a number n
with quantum
used as precision.
Name | Type | Description |
---|---|---|
n | number | The number to round |
quantum | number | e.g. 0.01 |
- Source
- Type:
- number
(inner) sort(arr) → {Array.<number>}
Numerically sort an array of numbers arr
. By default, JavaScripts sort()
is lexically.
Name | Type | Description |
---|---|---|
arr | Array.<number> |
- Source
- Type:
- Array.<number>
(inner) toDegrees(n) → {number}
Returns n
radians converted to degrees.
Name | Type | Description |
---|---|---|
n | number | A value in radiants |
- Source
- Type:
- number
(inner) toRadians(n) → {number}
Returns n
degrees converted to radiants.
Name | Type | Description |
---|---|---|
n | number | A value in degrees |
- Source
- Type:
- number