I have a value and want to know if it\'s an iteratable object literal, before I iterate it.
How do I do that?
Little gist, not really elegant but efficient
function _isObj( _obj ){
return ( typeof _obj === "object" && JSON.stringify( _obj ).indexOf( "{" ) == 0 );
}
Little example
function _isObj( _obj ){
return ( typeof _obj === "object" && JSON.stringify( _obj ).indexOf( "{" ) == 0 );
}
var p = document.createElement( "p" );
p.textContent = "undefined : " + _isObj( undefined );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "null : " + _isObj( null );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "boolean : " + _isObj( true );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "function : " + _isObj( function(){} );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "array : " + _isObj( [] );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "string : " + _isObj( "{}" );
document.body.appendChild( p );
document.body.appendChild( p );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "number : " + _isObj( 1 );
document.body.appendChild( p );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "object : " + _isObj( {} );
document.body.appendChild( p );
p = document.createElement( "p" );
p.textContent = "another object : " + _isObj( p );
document.body.appendChild( p );
hope this help