forIn
Invoke a function for each own and inherited enumerable property of an object.
Usage
var forIn = require( '@stdlib/utils/for-in' );
forIn( obj, fcn[, thisArg ] )
Invokes a function
for each own and inherited enumerable property of an object
.
function log( value, key ) {
console.log( '%s: %d', key, value );
}
function Foo() {
this.a = 1;
this.b = 2;
return this;
}
Foo.prototype.c = 3;
Foo.prototype.d = 4;
var obj = new Foo();
forIn( obj, log );
/* e.g., =>
a: 1
b: 2
c: 3
d: 4
*/
The invoked function
is provided three arguments:
value
: object property valuekey
: object propertyobj
: the input object
To terminate iteration before visiting all properties, the provided function must explicitly return false
.
function log( value, key ) {
console.log( '%s: %d', key, value );
return false;
}
var obj = {
'a': 1,
'b': 2,
'c': 3,
'd': 4
};
forIn( obj, log );
// e.g., => a: 1
To set the function execution context, provide a thisArg
.
function sum( value ) {
this.sum += value;
this.count += 1;
}
var obj = {
'a': 1,
'b': 2,
'c': 3,
'd': 4
};
var context = {
'sum': 0,
'count': 0
};
forIn( obj, sum, context );
var mean = context.sum / context.count;
// returns 2.5
Notes
- The function returns the input
object
. - Property iteration order is not guaranteed.
Examples
var fromCodePoint = require( '@stdlib/string/from-code-point' );
var forIn = require( '@stdlib/utils/for-in' );
function update( value, key, obj ) {
console.log( '%s: %d', key, value );
obj[ key ] *= value;
}
function Foo() {
return this;
}
Foo.prototype.beep = 3.14;
var obj;
var key;
var i;
obj = new Foo();
for ( i = 0; i < 26; i++ ) {
key = fromCodePoint( 97 + i );
obj[ key ] = i;
}
forIn( obj, update );
console.log( obj );