118

次のように、オブジェクトのメンバーに対して反復を実行するjQueryの方法はありますか?

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

for私はこれが私の素敵なjQuery表記の中から突き出ているのが好きではありません!

4

4 に答える 4

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

于 2009-07-08T08:59:16.787 に答える
56

each配列だけでなく、オブジェクトにも使用できます。

var obj = {
    foo: "bar",
    baz: "quux"
};
jQuery.each(obj, function(name, value) {
    alert(name + ": " + value);
});
于 2009-07-08T09:01:21.853 に答える
9

注:最近のほとんどのブラウザーでは、開発者コンソールでオブジェクトをナビゲートできるようになりました。この答えは時代遅れです。

このメソッドは、オブジェクトのプロパティをウォークスルーし、インデントを増やしてコンソールに書き込みます。

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");});
于 2013-01-09T17:06:52.027 に答える
4

遅くなりますが、次のようなObject.keysを使用して実行できます。

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>

于 2016-02-08T11:28:41.393 に答える