일반적인 방법으로는 forEach(), map()를 break 시킬 수 없습니다.
코드
try {
[1, 2, 3, 4, 5, 6, 7].forEach((value) => {
console.log(value);
if (value === 2) {
throw value;
}
});
} catch (e) {
console.log("Stop! " + e);
}
- forEach, map 메서드에서는 break를 걸 수 없습니다.
- “return false”를 사용하라는 방법이 소개되곤 반복이 멈추지는 않습니다.
- forEach, map 메서드에서는 try, catch 문법에서 강제로 에러를 일으켜 루프문을 벗어나게 하는 방법을 사용합니다.
some, every 메서드 사용하기
some(), every() 메서드는 반환값이 조건에 충족하지 못하면, 그 즉시 반복을 중지하는 구조를 가진 메서드입니다.
- some 메서드는 하나라도 true가 반환되면 반복을 중지합니다.
- every 메서드는 하나라도 false가 반환되면 반복을 중지합니다
forEach() 메서드와 some(), every() 메서드의 사용방법이 다른 이유는 해당 메서드를 코드로 구현하면 아래와 같이 구현되기 때문입니다.
function some(array, callback) {
for (let i = 0; i < array.length; i++) {
if (callback(array[i], i, array)) {
return true;
}
}
return false;
}
some([0, 0, 1, 0, 0], (value) => value);
// false
function every(array, callback) {
for (let i = 0; i < array.length; i++) {
if (!callback(array[i], i, array)) {
return false;
}
}
return true;
}
every([1, 2, 0, 2, 1], (value) => value);
// false
break 문을 사용해야 할 상황에는 되도록 for loop를 사용하도록 합시다.
참고자료
https://davidwalsh.name/javascript-array-tricks-3