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]).
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/linear-array@2.0.0"></script>
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/linear-array@2.0.0"></script>
<script src="custom.js"></script>
</body>
</html>
// custom.js
lineArr.isStepSequenceWithOffset([1, 2, 3]); // false
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.
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) === true || false
([]) -> false
([0]) -> true
([0,1,2,3,4]) -> true
([2,3,4,5,6]) -> false
([0,1,2,3,5]) -> false
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, 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
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.
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running Tests
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
Many thanks goes to these people for helping me maintain and upgrade the project:
Amin NAIRI 💻 🤔 |
Ivan Spoljaric
Copyright © 2020, Ivan Spoljaric. Released under the MIT License.