jQuery를 사용하여 JavaScript 객체의 속성 반복


116

다음과 같이 객체의 멤버에 대해 반복을 수행하는 jQuery 방법이 있습니까?

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

나는 for내 사랑스러운 jQuery 표기법 사이에서 튀어 나오는 것을 좋아하지 않는다 !

답변:


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

마다


또한 경고 n가 완전히 정확하지 않은 것 같습니다 . 적어도이 될 수있다n.name
유진

2
@Eugene : 나는 당신의 요점을 이해하지 못합니다. 각 함수는 배열 또는 객체를 첫 번째 인수로 사용하고 함수를 두 번째 인수로 사용합니다. 이 함수는 배열의 모든 요소 / 객체의 모든 속성에 대해 호출됩니다. 함수가 호출 될 때마다 인수로 전달 된 인덱스 및 값 / 이름 및 값을 가져옵니다. 제 예에서 매개 변수 "n"은 두 개의 문자열 "John"과 "JS"입니다. "이름"속성은 "정의되지 않음"이됩니다.
Tim Büthe

네. 나는 여기서 틀렸다. 어떻게 든 객체의 모든 속성은 예를 들어 문자열 인 속성 이름을 가진 또 다른 객체라고 생각했습니다. 그 모든 것이 잘못되었습니다. 정말 죄송합니다. :)
Eugene

4
각각에는 훨씬 더 많은 기능 this이 있습니다 n. return false각 루프를 중단 ...
앤디

56

each배열뿐만 아니라 객체에도 사용할 수 있습니다 .

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

9

이 메서드는 개체 속성을 살펴보고 들여 쓰기를 늘리면서 콘솔에 씁니다.

function enumerate(o,s){

    //if s isn't defined, set it to an empty string
    s = typeof s !== 'undefined' ? s : "";

    //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"){

            //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");});

이것을 사용하면 값에 널 (null) 오류가있는 경우 "catch되지 않은 형식 오류 : 널 (null)의 특성 '길이'를 읽을 수 없습니다"
JustinStolle

3

늦었지만 다음 과 같은 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>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.