The tool to range manipulation.
$ npm install --save rangem
const rangem = require('rangem');
const ranges = rangem.union([{ from: 1, to: 5 }, { from: 5, to: 10 }]);
// ➜ [{ from: 1, to: 10 }]
const range = ranges.pop(); // { from: 1, to: 3 }
rangem.subtract(range, [{ from: 5, to: 7 }]);
// ➜ [{ from: 1, to: 5 }, { from: 7, to: 10 }]
Unions intersecting ranges.
const union = require('rangem').union;
const ranges = [{ from: 1, to: 5 }, { from: 3, to: 6 }, { from: 10, to: 20 }];
union(ranges);
// ➜ [{ from: 1, to: 6 }, { from: 10, to: 20 }]
Type: {from: number, to: number}[]
Default: []
The ranges to union.
Subtract ranges from range.
const subtract = require('rangem').subtract;
const fromRange = { from: 10, to: 20 };
const whatRanges = [{ from: 10, to: 12 }, { from: 15, to: 18 }]
subtract(fromRange, whatRanges);
// ➜ [{ from: 12, to: 15 }, { from: 18, to: 20 }]
Type: {from: number, to: number}
The range from which will be deducted.
Type: {from: number, to: number}[]
Default: []
The ranges which will be deducted.
MIT © Andrew Abramov