迭代JavaScript对象';使用jQuery创建属性

迭代JavaScript对象';使用jQuery创建属性,javascript,jquery,for-loop,iteration,Javascript,Jquery,For Loop,Iteration,是否有jQuery方法对对象的成员执行迭代,例如: for (var member in obj) { ... } 我只是不喜欢这个,因为它在我可爱的jQuery符号中突出 $.each( { name: "John", lang: "JS" }, function(i, n){ alert( "Name: " + i + ", Value: " + n ); }); 您也可以用于对象,而不仅仅是用于阵列: var obj = { foo: "

是否有jQuery方法对对象的成员执行迭代,例如:

    for (var member in obj) {
        ...
    }
我只是不喜欢这个
,因为它在我可爱的jQuery符号中突出

$.each( { name: "John", lang: "JS" }, function(i, n){
    alert( "Name: " + i + ", Value: " + n );
});

您也可以用于对象,而不仅仅是用于阵列:

var obj = {
    foo: "bar",
    baz: "quux"
};
jQuery.each(obj, function(name, value) {
    alert(name + ": " + value);
});

注意:大多数现代浏览器现在都允许您在开发人员控制台中导航对象。这个答案已经过时了

此方法将遍历对象属性,并以递增的缩进将它们写入控制台:

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));
            }
        });
    }
}
只需将要迭代的对象传递给它:

    var response = $.ajax({
        url: myurl,
        dataType: "json"
    })
    .done(function(a){
       console.log("Returned values:");
       enumerate(a);
    })
    .fail(function(){ console.log("request failed");});

很晚,但可以使用like

var a={key1:'value1',key2:'value2',key3:'value3',key4:'value4'},
ulkeys=document.getElementById('object-keys'),str='';
var keys=对象。keys(a);

对于(i=0,l=keys.length;我猜,发出警报的
n
一点也不正确。至少可能是
n.name
@Eugene:我不明白你的意思。each函数将数组或对象作为第一个参数,函数作为第二个参数。该函数会为数组中的每个元素/对象中的每个属性调用。each t调用函数时,它将获取作为参数传入的索引和值/名称和值。在我的示例中,参数“n”是两个字符串“John”和“JS”。“name”属性将是“undefined”是的。我错了。不知何故,我认为,对象中的每个属性都是另一个对象,例如属性名,它是一个字符串。当然,所有这些都是错误的。很抱歉。:)每个都有更多的功能:
这个
也是
n
返回false
打破了每个循环…
i
n
严肃地说?为什么不
索引
名称
来保持整洁?你确实教了我一些新的东西,尽管
$。每个(obj,回调)
$(obj)不同。每个(回调)
,非常感谢。向上投票。当值为null时使用此选项会出现“Uncaught TypeError:无法读取null的属性'length'错误”