Check that value is object literal?

后端 未结 12 676
逝去的感伤
逝去的感伤 2020-12-01 10:57

I have a value and want to know if it\'s an iteratable object literal, before I iterate it.

How do I do that?

12条回答
  •  粉色の甜心
    2020-12-01 11:02

    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

提交回复
热议问题