⚠️ thismap
function has nothing to do withArray.prototype.map
method.
npm i map-number
<script src="https://cdn.jsdelivr.net/npm/map-number@latest/dist/map.umd.js"></script>
for production
<script src="https://cdn.jsdelivr.net/npm/map-number@latest/dist/map.umd.min.js"></script>
for production you may want to replace the "latest" version for a specific one.
<script src="https://unpkg.com/map-number@latest/dist/map.umd.js"></script>
for production
<script src="https://unpkg.com/map-number@latest/dist/map.umd.min.js"></script>
for production you may want to replace the "latest" version for a specific one.
const { map } = require('map-number');
const result = map(Math.sin(angle), -1, 1, 100, 0);
using javascript modules...
import { map } from 'map-number';
const result = map(Math.sin(angle), -1, 1, 100, 0);
After the script
tag has been added, mapNum
will be available globally.
const result = mapNum.map(Math.sin(angle), -1, 1, 100, 0);
Maps a number within a given range to a different range, returning a floating point number. The result WILL NOT be limited (clamped) to the the given output range.
This is the core function and all other map function variants depend on it.
syntax
map: (
input: number,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
) => number;
Maps a number within a given range to a different range, returning a number rounded down to the previous integer number. The result WILL NOT be limited (clamped) to the the given output range.
syntax
floor: (
input: number,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
) => number;
Maps a number within a given range to a different range, returning a number rounded up to the next integer number. The result WILL NOT be limited (clamped) to the the given output range.
syntax
ceil: (
input: number,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
) => number;
Maps a number within a given range to a different range, returning a number rounded to the closest integer number. The result WILL NOT be limited (clamped) to the the given output range.
syntax
round: (
input: number,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
) => number;
If you need to round to a specific number of decimal places, you can use the
transformed
method and write your own round function.
alias: clamp
Maps a number within a given range to a different range, returning a floating point number. The result will be limited (clamped) to the given output range.
syntax
limit: (
input: number,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
) => number;
alias: wrap
, create
Creates a single argument function implementing the given map
, floor
, ceil
, round
, limit
, clamp
or user created function. Useful when you need to map values multiple times within the same range, see example below.
syntax
compile: <O, I>(
map: MapFunction<O, I>,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
) => Compiled<O, I>;
type Compiled<O, I> = (input: I) => O;
example
import { map, round, compile } from "map-number";
const myMap = compile(map, -1, 1, 100, 0);
myMap(-0.2);
myMap(0.33);
myMap(0.5);
// ... is equivalent to...
map(-0.2, -1, 1, 100, 0);
map(0.33, -1, 1, 100, 0);
map(0.5, -1, 1, 100, 0);
alias: transform
Creates a map function where the result of the given function is transformed to a different value. This method is used internally to create the floor
, ceil
and round
methods.
syntax
transformed: <O, M, I>(
map: MapFunction<I, M>,
transform: Transformer<O, M>,
) => MapFunction<O, I>;
type Transformer<O, I> = (value: I, outputMin: number, outputMax: number) => O;
example
import { transform, map } from "map-number";
const plusOne = transform(
map,
(value) => value + 1,
);
plusOne(0.4, 0, 1, 0, 100); // => 41 instead of 40