Iterating a JavaScript object's properties using jQuery

后端 未结 4 577
温柔的废话
温柔的废话 2020-11-27 03:43

Is there a jQuery way to perform iteration over an object\'s members, such as in:

    for (var member in obj) {
        ...
    }

I just do

相关标签:
4条回答
  • 2020-11-27 04:07
    $.each( { name: "John", lang: "JS" }, function(i, n){
        alert( "Name: " + i + ", Value: " + n );
    });
    

    each

    0 讨论(0)
  • 2020-11-27 04:16

    Note: Most modern browsers will now allow you to navigate objects in the developer console. This answer is antiquated.

    This method will walk through object properties and write them to the console with increasing indent:

    function enumerate(o,s){
    
        //if s isn't defined, set it to an empty string
        s = typeof s !== 'undefined' ? s : "";
    
        //if o is null, we need to output and bail
        if(typeof o == "object" && o === null){
    
           console.log(s+k+": null");
    
        } else {    
    
            //iterate across o, passing keys as k and values as v
            $.each(o, function(k,v){
    
                //if v has nested depth
               if(typeof v == "object" && v !== null){
    
                    //write the key to the console
                    console.log(s+k+": ");
    
                    //recursively call enumerate on the nested properties
                    enumerate(v,s+"  ");
    
                } else {
    
                    //log the key & value
                    console.log(s+k+": "+String(v));
                }
            });
        }
    }
    

    Just pass it the object you want to iterate through:

        var response = $.ajax({
            url: myurl,
            dataType: "json"
        })
        .done(function(a){
           console.log("Returned values:");
           enumerate(a);
        })
        .fail(function(){ console.log("request failed");});
    
    0 讨论(0)
  • 2020-11-27 04:18

    Late, but can be done by using Object.keys like,

    var a={key1:'value1',key2:'value2',key3:'value3',key4:'value4'},
      ulkeys=document.getElementById('object-keys'),str='';
    var keys = Object.keys(a);
    for(i=0,l=keys.length;i<l;i++){
       str+= '<li>'+keys[i]+' : '+a[keys[i]]+'</li>';
    }
    ulkeys.innerHTML=str;
    <ul id="object-keys"></ul>

    0 讨论(0)
  • 2020-11-27 04:27

    You can use each for objects too and not just for arrays:

    var obj = {
        foo: "bar",
        baz: "quux"
    };
    jQuery.each(obj, function(name, value) {
        alert(name + ": " + value);
    });
    
    0 讨论(0)
提交回复
热议问题