Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

array-each-nonflat

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

array-each-nonflat

Array each to iterate on both flat and non-flat arrays via a non-recursive single-loop.

  • 1.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

array-each-nonflat

Build Status npm version Coverage Status

Array each to iterate on both flat and non-flat arrays via a non-recursive single-loop.

Install

$ npm i array-each-nonflat

Usage

Basically, your function will receive each element (first argument) in order as it goes thru the array from beginning to end, including into any sub-arrays it encounters from beginning to end.

The usual index argument (second argument) is the same as you would expect of a flat array. It's where the element would be if the array was flattened. That makes it different than the usual value because it's not the index into the current array (third argument).

The usual array argument (third argument) is the array the element is from, so, it may be an inner array instead of the main outermost array provided to each.

A new fourth argument is the index into the current array for the current element.

A new fifth argument is the stack of outer arrays and their next index to process, once we complete the current inner array. Each stack element is an array with two elements. The first is the array and the second is the index in that array to do next, when we get back to that array.

const each = require('array-each-nonflat')

// a non-flat array:
//   [ 1, [2, 3], [4, [5, 6], 7, 8], 9 ]
const innerArray1 = [2, 3]
const innerArray3 = [5, 6]
const innerArray2 = [4, innerArray3, 7, 8]
const array = [ 1, innerArray1, innerArray2, 9 ]

// call a function for each element:
each(array, (e, I, a, i, s) => {
  // e: current array element.
  // I: overall index of the current element.
  // a: the array the current element is from.
  // i: the index into `a` where `e` is from.
  // s: stack of [parentArray, nextIndex] to continue with after this array.

  // return false  // this would discontinue the each operation.
})

// the above variables will have the following values for the above call.
// e=1, I=0, a=array, i=0, s=empty
// e=2, I=1, a=innerArray1, i=0, s=[ [array, 2] ]
// e=3, I=2, a=innerArray1, i=1, s=[ [array, 2] ]
// e=4, I=3, a=innerArray2, i=0, s=[ [array, 3] ]
// e=5, I=4, a=innerArray3, i=0, s=[ [array, 3], [innerArray2, 2] ]
// e=6, I=5, a=innerArray3, i=1, s=[ [array, 3], [innerArray2, 2] ]
// e=7, I=6, a=innerArray2, i=2, s=[ [array, 3] ]
// e=8, I=7, a=innerArray2, i=3, s=[ [array, 3] ]
// e=9, I=8, a=array, i=3, s=[]

MIT License

Keywords

FAQs

Package last updated on 18 May 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc