array-walker

Multi-dimensional array walker with observation

Usage no npm install needed!

<script type="module">
  import arrayWalker from 'https://cdn.skypack.dev/array-walker';
</script>

README

Array Walker

Traverses a multi-dimensional array and fires off a callback with a value and its relationship.

Example

let walker = require('array-walker');

// A single-dimensional array
walker(['a', 'b'], (value, key) => console.log(value, key));
// a, 0
// b, 1

// A two-dimensional array
walker([['a', 'b'], ['c', 'd']], (value, x, y) => console.log(value, x, y));
// a, 0, 0
// b, 0, 1
// c, 1, 0
// d, 1, 1

// A 12-dimensional array
walker(
  [[[[[[[[[[[['a', 'b']]]]]], 'c']]]]]],
  (value, ...lineage) => console.log(value, ...lineage)
);
// a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
// b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
// c, 0, 0, 0, 0, 0, 1


// With context
walker(['a', 'b'], callbackWithContext, {example: "The Answer"});
// The Answer, a, 0
// The Answer, b, 1

function callbackWithContext(value, key) {
  console.log(this.example, value, key);
}

Installation

$ npm install array-walker

API

var walker = require('array-walker');

walker(items, observationCallback, context, ...lineage)

Type Data Type Name Description
parameter *[] items The array to walk.
parameter function observationCallback The function to call when a non-array value is found.
parameter * The context passed to the callback
parameter ...number [lineage] The parent indexes.
returns undefined n/a n/a

observationCallback(value, ...lineage)

The observation callback is fired when a non-array value is found.

Type Data Type Name Description
this * this The context passed to the walker
parameter !*[] value The value that was discovered.
parameter ...number lineage The indexes in each dimension of the array.
returns undefined n/a n/a

Links