array-areas
Select elements in 2D arrays in interesting ways.
Installation
npm install --save array-areas
Usage
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 element[2][1] ("l") and element[3][3] ("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 │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
└─────┴─────┴─────┴─────┴─────┘