array-areas v1.0.1
array-areas
Select elements in 2D arrays in interesting ways.
Installation
npm install --save array-areasUsage
import { diagonal, antidiagonal, area, row, col } from 'array-areas'diagonal
You can select a diagonal selection of element from your array by calling
diagonal(arr, rowIndex, columnIndex).
If our array looked like this
┌─────┬─────┬─────┬─────┬─────┐
│ a │ b │ c │ d │ e │
├─────┼─────┼─────┼─────┼─────┤
│ f │ g │ h │ i │ j │
├─────┼─────┼─────┼─────┼─────┤
│ k │ l │ m │ n │ o │
├─────┼─────┼─────┼─────┼─────┤
│ p │ q │ r │ s │ t │
├─────┼─────┼─────┼─────┼─────┤
│ u │ v │ w │ x │ y │
└─────┴─────┴─────┴─────┴─────┘And we called diagonal(arr, 2, 1) our result would be a flat array containing
[
{row: 1, col: 0, val: 'f' },
{row: 2, col: 1, val: 'l' },
{row: 3, col: 2, val: 'r' },
{row: 4, col: 3, val: 'x' },
]Illustrated here:
┌─────┬─────┬─────┬─────┬─────┐
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ 1,0 │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ 2,1 │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ 3,2 │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ 4,3 │ │
└─────┴─────┴─────┴─────┴─────┘antidiagonal
You can select a anti-diagonal selection of elements from your array by calling
antidiagonal(arr, rowIndex, columnIndex).
If our array looked like this
┌─────┬─────┬─────┬─────┬─────┐
│ a │ b │ c │ d │ e │
├─────┼─────┼─────┼─────┼─────┤
│ f │ g │ h │ i │ j │
├─────┼─────┼─────┼─────┼─────┤
│ k │ l │ m │ n │ o │
├─────┼─────┼─────┼─────┼─────┤
│ p │ q │ r │ s │ t │
├─────┼─────┼─────┼─────┼─────┤
│ u │ v │ w │ x │ y │
└─────┴─────┴─────┴─────┴─────┘And we called antidiagonal(arr, 1, 2) our result would be a flat array containing
[
{row: 0, col: 3, val: 'd' },
{row: 1, col: 2, val: 'g' },
{row: 2, col: 1, val: 'l' },
{row: 3, col: 0, val: 'u' },
]Illustrated here:
┌─────┬─────┬─────┬─────┬─────┐
│ │ │ │ 0,3 │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ 1,2 │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ 2,1 │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ 3,0 │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
└─────┴─────┴─────┴─────┴─────┘area
An area is a group of elements defined by any two elements and composed of all the
elements between them. This can be generated by calling arr(arr, [rowIndex, columnIndex], [rowIndex, columnIndex]).
If our array looked like this
┌─────┬─────┬─────┬─────┬─────┐
│ a │ b │ c │ d │ e │
├─────┼─────┼─────┼─────┼─────┤
│ f │ g │ h │ i │ j │
├─────┼─────┼─────┼─────┼─────┤
│ k │ l │ m │ n │ o │
├─────┼─────┼─────┼─────┼─────┤
│ p │ q │ r │ s │ t │
├─────┼─────┼─────┼─────┼─────┤
│ u │ v │ w │ x │ y │
└─────┴─────┴─────┴─────┴─────┘Getting an area made of element2 ("l") and element3 ("s") would look like this area(arr, [2,1], [3,3]) and our result would be a 2d array with the area elements.
[
[
{ row: 2, col: 1, val: 'l' },
{ row: 2, col: 2, val: 'm' },
{ row: 2, col: 3, val: 'n' }
],
[
{ row: 3, col: 1, val: 'q' },
{ row: 3, col: 2, val: 'r' },
{ row: 3, col: 3, val: 's' }
]
]Illustrated here:
┌─────┬─────┬─────┬─────┬─────┐
│ a │ b │ c │ d │ e │
├─────┼─────┼─────┼─────┼─────┤
│ f │ g │ h │ i │ j │
├─────┼─────┴─────┴─────┼─────┤
│ k │ │ o │
├─────┤ area ├─────┤
│ p │ │ t │
├─────┼─────┬─────┬─────┼─────┤
│ u │ v │ w │ x │ y │
└─────┴─────┴─────┴─────┴─────┘col
You can select a column of elements from your array by calling
col(arr, columnIndex).
If our array looked like this
┌─────┬─────┬─────┬─────┬─────┐
│ a │ b │ c │ d │ e │
├─────┼─────┼─────┼─────┼─────┤
│ f │ g │ h │ i │ j │
├─────┼─────┼─────┼─────┼─────┤
│ k │ l │ m │ n │ o │
├─────┼─────┼─────┼─────┼─────┤
│ p │ q │ r │ s │ t │
├─────┼─────┼─────┼─────┼─────┤
│ u │ v │ w │ x │ y │
└─────┴─────┴─────┴─────┴─────┘And we called col(arr, 1) our result would be a flat array containing
[
{ row: 0, col: 1, val: 'b' },
{ row: 1, col: 1, val: 'g' },
{ row: 2, col: 1, val: 'l' },
{ row: 3, col: 1, val: 'q' },
{ row: 4, col: 1, val: 'v' }
]Illustrated here:
┌─────┬─────┬─────┬─────┬─────┐
│ │ 0,1 │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ 1,1 │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ 2,1 │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ 3,1 │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ 4,1 │ │ │ │
└─────┴─────┴─────┴─────┴─────┘row
You can select a row of elements from your array by calling
row(arr, rowIndex).
If our array looked like this
┌─────┬─────┬─────┬─────┬─────┐
│ a │ b │ c │ d │ e │
├─────┼─────┼─────┼─────┼─────┤
│ f │ g │ h │ i │ j │
├─────┼─────┼─────┼─────┼─────┤
│ k │ l │ m │ n │ o │
├─────┼─────┼─────┼─────┼─────┤
│ p │ q │ r │ s │ t │
├─────┼─────┼─────┼─────┼─────┤
│ u │ v │ w │ x │ y │
└─────┴─────┴─────┴─────┴─────┘And we called row(arr, 1) our result would be a flat array containing
[
{ row: 1, col: 0, val: 'f' },
{ row: 1, col: 1, val: 'g' },
{ row: 1, col: 2, val: 'h' },
{ row: 1, col: 3, val: 'i' },
{ row: 1, col: 4, val: 'j' }
]Illustrated here:
┌─────┬─────┬─────┬─────┬─────┐
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ 1,0 │ 1,1 │ 1,2 │ 1,3 │ 1,4 │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
└─────┴─────┴─────┴─────┴─────┘