Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
array-each-nonflat
Advanced tools
Array each to iterate on both flat and non-flat arrays via a non-recursive single-loop.
Array each to iterate on both flat and non-flat arrays via a non-recursive single-loop.
$ npm i array-each-nonflat
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=[]
FAQs
Array each to iterate on both flat and non-flat arrays via a non-recursive single-loop.
The npm package array-each-nonflat receives a total of 4 weekly downloads. As such, array-each-nonflat popularity was classified as not popular.
We found that array-each-nonflat demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.