linear-array
v2.1.0
Published
Returns an array filed with linearly increasing numbers, starting from 0 up to the given value - 1 (without offset), or from 1 to the value itself (with offset).
Downloads
7
Maintainers
Readme
linear-array
Javascript / Node.js utility library. Returns a set of utility functions, available through the lineArr namespace, which serve to generate arrays populated with sequences such as natural or stepWithOffset sequence, and to check if an array is a sequence of a certain type (like a natural sequence [0,1,2,3,4]).
Install
There are 2 ways to install and use the library.
$ npm install --save linear-array
- import with a
<script>
tag
<script type="module" src="https://unpkg.com/[email protected]"></script>
Importing and using in project
Since this package can be used on the client side, as UMD
or ES6
module, and server side, as CommonJS
module, there are 2 ways to import it into your .js file:
CommonJS
const lineArr = require('linear-array');
// ...
linear.isSeqNaturalNumbers([1, 2, 3]); // false
ES6
import {
isSeqNaturalNumbers,
fillSeqNaturalNumbers,
fillStepSequenceWithOffset,
isStepSequenceWithOffset,
} from 'linear-array';
// ...
isSeqNaturalNumbers([0, 1, 2, 3]); // true
// OR
import * as lineArr from 'linear-array';
// ...
lineArr.isSeqNaturalNumbers([0, 1, 2, 3]); // true
UMD
If you imported the linear-array
library with the <script>
tag it will be attached to the globally available window
object.
That's why you can use the module directly in your code by referencing the lineArr
module directly
<!-- index.html -->
<html>
<head>
<!-- -->
</head>
<body>
<script src="https://unpkg.com/[email protected]"></script>
<script src="custom.js"></script>
</body>
</html>
// custom.js
lineArr.isStepSequenceWithOffset([1, 2, 3]); // false
Usage
Currently, there are 4 methods available in the package.
Based on the differences in their input and output data types, they can be divided into 2 categories;
- inputs / arguments are finite integers, the output value is a filled array of finite integers sorted in an increasing order according to a specific pattern
- input / argument is an array of finite integers, and the output value is a boolean which indicates it the given array conforms to a specific pattern
But both categories operate on the same pattern of data types, and these patterns can be categorized in a mathematical sense as Sequences.
But, repetition of numbers in the arrays is not allowed.
Sequence of natural numbers
fillSeqNaturalNumbers (limiter: number, [includeLast = false]: boolean) => number[]
fillSeqNaturalNumbers(limiter, inludeLast?) === [0, 1, 2, 3, ... , includeLast ? limiter : (limiter - 1)]
(0) -> []
(7) -> [0, 1, 2, 3, 4, 5, 6]
(7, true) -> [0, 1, 2, 3, 4, 5, 6, 7]
isSeqNaturalNumbers(arr: number[]) => boolean
isSeqNaturalNumbers(arr) === true || false
([]) -> false
([0]) -> true
([0,1,2,3,4]) -> true
([2,3,4,5,6]) -> false
([0,1,2,3,5]) -> false
Sequence of numbers with a specified fixed step and offset
fillStepSequenceWithOffset (limiter: number, [step = 1]: number, [offset = 0]: number) => number[]
fillStepSequenceWithOffset(limiter, step?, offset?) === [0+offset, step + offset, 2*step + offset, ..., (limiter - 1)*step + offset]
(0) -> []
(0,1,1) -> []
(1,1,1) -> [1]
(5) -> [0, 1, 2, 3, 4]
(5,1,3) -> [3, 4, 5, 6, 7]
(5,3) -> [0, 3, 6, 9, 12]
(5,2,2) -> [2, 4, 6, 8, 10]
isStepSequenceWithOffset (arr: number[], [step = 1]: number, [offset = 0]: number) => boolean
isStepSequenceWithOffset(arr, step?, offset?) === true || false
([]) -> false
([0]) -> true
([0],1,1) -> false
([0,1,2,3,4]) -> true
([0,1,2,3,4], 2) -> false
([0,1,2,3,4], 1, 1) -> false
([1,2,3,4,5], 1, 1) -> true
([6,9,12,15,18], 3, 6) -> true
([5,9,12,15,19], 3, 6) -> false
Release history
2.0.0.
BREAKING CHANGES:
The linearArray method no longer exists and it is not imported directly from the library.
The closes equivalent to the old linearArray
method is now fillSeqNaturalNumbers
NEW FEATURES:
This update has 4 new methods:
fillSeqNaturalNumbers
isSeqNaturalNumbers
fillStepSequenceWithOffset
isStepSequenceWithOffset
See the Usage section on what they are and how they are used.
About
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
$ npm install && npm test
Contributors ✨
Many thanks goes to these people for helping me maintain and upgrade the project:
Author
Ivan Spoljaric
License
Copyright © 2020, Ivan Spoljaric. Released under the MIT License.