2013-09-06 15 views
75

node.js의 코드는 간단합니다.각 루프 내부에서 '계속'하는 방법 : 밑줄, node.js

_.each(users, function(u, index) { 
    if (u.superUser === false) { 
    //return false would break 
    //continue? 
    } 
    //Some code 
}); 

내 질문은 내가 수퍼 유저가 false로 설정되어있는 경우 "일부 코드"를 실행하지 않고 다음 인덱스를 계속 할 수있는 방법인가?

추신 : 다른 조건으로 문제를 해결할 수 있습니다. 대답을 아는 것이 여전히 궁금합니다.

답변

126
_.each(users, function(u, index) { 
    if (u.superUser === false) { 
    return; 
    //this does not break. _.each will always run 
    //the iterator function for the entire array 
    //return value from the iterator is ignored 
    } 
    //Some code 
}); 

lodash와 밑줄 (하지) 것을 보조 노트 _.forEach 일찍 명시 적 return false iteratee 기능과 lodash에서 초기 forEach 루프를 종료 할 수있는 "루프"를 종료 할 경우.

+0

왜 이것이 적용되지 않습니까? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue –

+6

'_.each'와 일반'for() {}'루프는 같은 것이 아니기 때문에. –

+0

@ConAntonakos JS에서'for-each (collection, callback)'을 사용하면'callback' 안에 for 루프가 없으므로'break/continue'가 적용되지 않습니다. –

0
_.each(users, function(u, index) { 
    if (u.superUser) { 
    //Some code 
    } 
}); 
+0

죄송합니다. 시나리오를 자세하게 작성해야합니다. 수퍼 유저가 false이면 코드를 실행하고 계속 진행해야합니다. if (superUser! = false && activated)라고 말하면서 다른 것을하고 "Some code"를 실행하고 "Some code"를 실행할 필요가있는 다른 조건이있을 것입니다. 나는 그저 if와 else 내에서 같은 코드를 다시 작성하지 않고 그것을 할 수있는 방법이 있는지 알고 싶었습니다. 나는 이것을위한 또 다른 함수를 만들고 싶지 않다. – nightgaunt

+1

그는 화살표 코드의 매우 가난한 행위를 피하는 방법을 묻고있었습니다. –

8

for 루프의 continue 대신 _.each()return 문을 underscore.js에 사용하면 현재 반복 만 건너 뜁니다.

관련 문제