[1,2,3].forEach(function(el) {
    if(el === 1) break;
});
forEachJavaScript 에서 새로운 방법을 사용하여이 작업을 수행하려면 어떻게해야 합니까? 나는 시도했다 return;, return false;하고 break. break충돌하고 return아무것도 반복하지 않습니다.
답변
어떤이 내장되지-에서의 능력 break에서 forEach. 실행을 중단하려면 일종의 예외를 발생시켜야합니다. 예.
var BreakException = {};
try {
  [1, 2, 3].forEach(function(el) {
    console.log(el);
    if (el === 2) throw BreakException;
  });
} catch (e) {
  if (e !== BreakException) throw e;
}
JavaScript 예외는 그리 예쁘지 않습니다. 내부에 for정말로 필요한 경우 전통적인 루프가 더 적합 할 수 있습니다 break.
사용하다 Array#some
대신 다음을 사용하십시오 Array#some.
[1, 2, 3].some(function(el) {
  console.log(el);
  return el === 2;
});
이것은 배열 순서로 실행 된 콜백이 있으면 즉시 some반환 하고 나머지는 실행을 단락 시키므로 작동 합니다 .truetrue
some, 그 반대 every(에서 멈춤 return false) 및 누락 된 브라우저에 forEach추가해야하는 모든 ECMAScript Fifth Edition 메소드입니다 Array.prototype.
답변
새로운 for of 루프를 사용하여 ECMAScript 2015 (일명 ES6)에서이 작업을 수행하는 더 좋은 방법이 있습니다. 예를 들어이 코드는 숫자 5 뒤에 배열 요소를 인쇄하지 않습니다.
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (let el of arr) {
  console.log(el);
  if (el === 5) {
    break;
  }
}
문서에서 :
for … in 및 for … of 문 모두 무언가를 반복합니다. 그들 사이의 주요 차이점은 그들이 반복하는 것입니다. 을 위해 더 … 문은 원래 삽입 순서로 객체의 열거 속성을 반복 처리. 는 의를 위해 … 문이 데이터를 반복 처리 반복 가능한 객체를 정의는 이상 반복 할 것이다.
반복에 인덱스가 필요하십니까? 당신은 사용할 수 있습니다 Array.entries():
for (const [index, el] of arr.entries()) {
  if ( index === 5 ) break;
}
답변
모든 방법을 사용할 수 있습니다 :
[1,2,3].every(function(el) {
    return !(el === 1);
});
ES6
[1,2,3].every( el => el !== 1 )
오래된 브라우저 지원을 위해 :
if (!Array.prototype.every)
{
  Array.prototype.every = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this &&
          !fun.call(thisp, this[i], i, this))
        return false;
    }
    return true;
  };
}
답변
MDN 문서Array.prototype.forEach() 에서 인용 :
없다 중지 또는 중단 할 수있는 방법
forEach()예외를 던지는 이외의 루프. 이러한 동작이 필요한 경우.forEach()방법이 잘못된 도구 이므로 대신 일반 루프를 사용하십시오. 술어에 대해 배열 요소를 테스트하고 부울 리턴 값이 필요한 경우every()또는some()대신 사용할 수 있습니다 .
@bobince가 제안한대로 코드 (질문에)를 Array.prototype.some()대신 사용하십시오. 사용 사례에 매우 적합합니다.
Array.prototype.some()콜백이 진솔한 값 (a로 변환 될 때 참이되는 값)을 반환 할 때까지 배열에있는 각 요소에 대해 콜백 함수를 한 번 실행합니다Boolean. 그러한 요소가 발견되면some()즉시 true를 리턴합니다. 그렇지 않으면some()false를 반환합니다. 콜백은 값이 할당 된 배열의 인덱스에 대해서만 호출됩니다. 삭제되었거나 값이 할당되지 않은 인덱스에 대해서는 호출되지 않습니다.
답변
불행히도이 경우를 사용하지 않으면 훨씬 좋습니다 forEach. 대신 일반 for루프를 사용하면 예상대로 정확하게 작동합니다.
var array = [1, 2, 3];
for (var i = 0; i < array.length; i++) {
  if (array[i] === 1){
    break;
  }
}
답변
콜백 함수 내에서 false를 반환 할 수 있으므로 jquery의 each메소드 를 사용하는 것이 좋습니다 .
$.each(function(e, i) {
   if (i % 2) return false;
   console.log(e)
})
Lodash 라이브러리는 또한 takeWhilemap / reduce / fold 등과 연결될 수있는 방법을 제공합니다 :
var users = [
  { 'user': 'barney',  'active': false },
  { 'user': 'fred',    'active': false },
  { 'user': 'pebbles', 'active': true }
];
_.takeWhile(users, function(o) { return !o.active; });
// => objects for ['barney', 'fred']
// The `_.matches` iteratee shorthand.
_.takeWhile(users, { 'user': 'barney', 'active': false });
// => objects for ['barney']
// The `_.matchesProperty` iteratee shorthand.
_.takeWhile(users, ['active', false]);
// => objects for ['barney', 'fred']
// The `_.property` iteratee shorthand.
_.takeWhile(users, 'active');
// => []
답변
코드 예제에서 원하는 Array.prototype.find것은 Array.prototype.find () 및 Array.prototype.findIndex ()입니다. 
[1, 2, 3].find(function(el) {
    return el === 2;
}); // returns 2
