각 루프 내에서 '계속'하는 방법 : 밑줄, node.js


80

node.js의 코드는 충분히 간단합니다.

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

내 질문은 superUser가 false로 설정된 경우 "일부 코드"를 실행하지 않고 다음 색인을 계속할 수있는 방법입니다.

추신 : 다른 조건이 문제를 해결할 것이라는 것을 알고 있습니다. 답이 궁금합니다.

답변:


137
_.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 함수에서 명시 적으로 루프를 종료 할 수 있습니다 forEach.


이것이 적용되지 않는 이유는 무엇입니까? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Con Antonakos

6
때문에 _.each하고 정기적 for () {}루프는 같은 것이 아니다.
Peter Lyons 2005

당신이 사용하는 경우 @ConAntonakos은 for-each(collection, callback)JS에서 내부 루프 어떤이없는 callback따라서 break/continue적용되지 않습니다.
pgpb.padilla 2015

12

continuefor 루프 의 문 대신 underscore.js의 return문을 사용할 수 _.each()있으며 현재 반복 만 건너 뜁니다.


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

죄송합니다. 시나리오를 자세히 설명 했어야했는데. 수퍼 유저가 거짓이면 일부 코드를 실행 한 다음 계속해야합니다. 다른 조건이 있습니다. if (superUser! = false && activate) 다른 작업을 수행하고 "Some code"를 실행해야하고 "Some code"를 실행해야하는 다른 조건이 있습니다. 다른 if 및 else 내부에서 동일한 코드를 다시 작성하지 않고 수행 할 수있는 방법이 있는지 알고 싶었습니다. 이를 위해 다른 기능을 만들고 싶지 않습니다.

1
그는 매우 열악한 화살표 코드 관행을 피하는 방법을 물었습니다.
David Betz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.