Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.