2016-06-24 5 views
-1

객체 리터럴을 반복하고 키 중 하나를 선택하여 값을 반환하려고합니다. 이는 함수가됩니다. 내 문제는, 하나의 값을 반환하는 루프를 얻을 수 없다는 것입니다. 항상 모든 값 (함수)을 반환합니다. 필자는 객체 리터럴 (foo 참조) 내부에 함수를 중첩 시키면 더 잘 작동하지만 여전히 반복하지 않는다는 것을 알게되었습니다.중첩 된 함수를 사용하여 객체 리터럴을 반복 함

Here is the JS fiddle.

var functions = { 
    blah: blah(), 
    foo: function() { console.log("foo"); } 
}; 


for(var key in functions){ 
    if(functions[key] == 'foo') { 
    console.log("hello"); //if functions contains the key 'foo' say hi 
    } 
} 
function blah() {alert("blah")}; 

functions.foo(); 
+0

() Object.keys를 사용하는 것입니다. – melpomene

+0

죄송합니다, 프로그래밍을 처음 접했습니다. 나는 그것이 도움이 될 거라 생각했다. – Twigs

답변

2

키를 확인하지 않고 기능에 대해 문자열을 확인하고 있습니다.

for(var key in functions){ 
    if (key==="foo") { 
     console.log("hello"); 
    } 
} 

또 다른 방법은 내가 코드가 귀하의 질문에 무슨 상관이 표시되지 않습니다

var keys = Object.keys(functions); 
if (keys.indexOf("foo")>-1) { 
    console.log("hello"); 
} 
+1

매우 엄격한 비교? 편집 : 나는 단지 농담이었다. – undefined

+2

=== vs ==를 사용하는 것보다 논쟁이 있었던 곳에서 나는 또 다른 게시물을 보았습니다. ;) 논쟁을 고수하는 생각이 새로운 실마리에 올랐다. (3.5 시간 더 5까지) – epascarello

1
in your condition if(functions[key] == 'foo') 

the functions[key] returns a function. the key itself is already a literal that can be compare to 'foo' 

var functions = { 
    blah: blah(), 
    foo: function() { console.log("foo"); } 
}; 


for(var key in functions){ 
    if(key == 'foo') { 
    console.log("hello"); //if functions contains the key 'foo' say hi 
    } 
} 
function blah() {alert("blah")}; 

functions.foo();