node package manager

multidim-array-index

multidim-array-index

maps multidimensional array indices to monodimensional array index

NPM version Build Status Dependency Status

js-standard-style

Table Of Contents:

Installation

With npm do

npm install multidim-array-index

Examples

All code in the examples below is intended to be contained into a single file.

var multiDimArrayIndex = require('multidim-array-index')

1th-order

In the monodimensional case, it just returns the index itself.

var i3 = multiDimArrayIndex.bind(null, [3])
 
i3([0]) // 0 
i3([1]) // 1 
i3([2]) // 2 

2th-order

For a two dimensional case, for instance a matrix, it is equivalent to the function (i, j, numCols) => j + i * numCols

var i2x3 = multiDimArrayIndex.bind(null, [2, 3])
 
i2x3([0, 0]) // 0 
i2x3([0, 1]) // 1 
i2x3([0, 2]) // 2 
i2x3([1, 0]) // 3 
i2x3([1, 1]) // 4 
i2x3([1, 2]) // 5 

3th-order

var i2x3x4 = multiDimArrayIndex.bind(null, [2, 2, 2])
 
i2x3x4([0, 0, 0]) // 0 
i2x3x4([0, 0, 1]) // 1 
i2x3x4([0, 0, 2]) // 2 
i2x3x4([0, 0, 3]) // 3 
i2x3x4([0, 1, 0]) // 4 
i2x3x4([0, 1, 1]) // 5 
i2x3x4([0, 1, 2]) // 6 
i2x3x4([0, 1, 3]) // 7 
i2x3x4([1, 0, 0]) // 8 
i2x3x4([1, 0, 1]) // 9 
i2x3x4([1, 0, 2]) // 10 
i2x3x4([1, 0, 3]) // 11 
i2x3x4([1, 1, 0]) // 12 
i2x3x4([1, 1, 1]) // 13 
i2x3x4([1, 1, 2]) // 14 
i2x3x4([1, 1, 3]) // 15 
 
i2x2x2([0, 0, 0]) //// 0 
i2x2x2([0, 0, 1]) // 1 
i2x2x2([0, 1, 0]) // 2 
i2x2x2([0, 1, 1]) // 3 
i2x2x2([1, 0, 0]) // 4 
i2x2x2([1, 0, 1]) // 5 
i2x2x2([1, 1, 0]) // 6 
i2x2x2([1, 1, 1]) // 7 

API

multiDimArrayIndex(dimension, indices)

  • @param {Array} dimensions defines the shape of the multi dimensional array
  • @param {Array} indices to transform
  • @returns {Number} index of an equivalent mono dimensional array

Given dimensions d_1, d_2, d_3 .. d_n and indices i_1, i_2, i_3 .. i_n index is computed by formula

index = i_n + i_(n-1) * d_n + i_(n-2) * d_n * d_(n-1) + ... + i_2 * d_n * d_(n-1) * ... * d_3 + i_1 * d_n * ... * d_2

multiDimArrayIndex.error

An object exposing the following error messages:

  • outOfBoundIndex

For example, the following snippets will throw

// outOfBoundIndex 
 
i3([11])
i2x3x4([2, 3, 5])

License

MIT