forOf object iteration — A 'for in'/'Object.keys forEach' alternative
npm install object-forof

Simple object iterator
bash
npm install object-forof --save
`$3
`javascript
const forOf = require('object-forof') // Explanation:
const obj = {
input: { // --> type
in1: // --> port
'1', // --> val
// Calls: fn('input', 'in1', '1')
in2: // --> port
'2' // --> val
// Calls: fn('input', 'in1', '2')
},
output: { // --> type
out1: // --> port
'1', // --> val
// Calls: fn('output', 'out1', '1')
out2: // --> port
'2' // --> val
// Calls: fn('output', 'out2', '2')
}
}
`Given the above example you could use
Object.keys like this:
`javascript
Object.keys(obj).forEach((type) => {
Object.keys(obj[type]).forEach((port) => {
const val = obj[type][port]
// do something with type, port, val
})
})
`Or a
for in loop
`javascript
for (let type in obj) {
if (obj.hasOwnProperty(type)) {
for (let port in obj[type]) {
if (obj[type].hasOwnProperty(port)) {
const val = obj[type][port]
// do something with type, port, val
}
}
}
}
`With
forOf:
`javascript
forOf((type, port, val) => {
// do something with type, port, val // optionally return something
}, obj)
`If you return something other from the function than
undefined
it will be added as a value within the returned array.E.g.
`javascript
forOf((type, port, val) => (
type === 'input' ? {type: type, val: val} : undefined
), obj)
``javascript
forOf((type, port, val) => ({type: type, val: val}), obj)
.filter((val) => {
return val.type === 'input'
})
`Both result in:
`javascript
[
{type: 'input', val: '1'},
{type: 'input', val: '2'}
]`` * Development version: https://npmcdn.com/object-forof/dist/forOf.js
* Minified version: https://npmcdn.com/object-forof/dist/forOf.min.js