/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])

Primary LanguageJavaScriptMIT LicenseMIT

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.

  1. npm
$ npm install --save linear-array
  1. import with a <script> tag
<script type="module" src="https://unpkg.com/linear-array@2.0.0"></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/linear-array@2.0.0"></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;

  1. 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
  2. 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

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

Contributors ✨

Many thanks goes to these people for helping me maintain and upgrade the project:


Amin NAIRI

💻 🤔 ⚠️

Author

Ivan Spoljaric

License

Copyright © 2020, Ivan Spoljaric. Released under the MIT License.