JavaScript에서 플래그 작업하기
지금 우리는 플래그를 사용하는 방법을 배울 것입니다.
플래그는 true와 false라는 두 가지 값만 가질 수 있는 특별한 변수입니다.
플래그를 사용하여 특정한 것이 없는지 확인하는 문제를 해결할 수 있습니다:
예를 들어, 배열에 특정 값을 가진 요소가 없는지 확인할 수 있습니다. 시작해 봅시다.
다음 문제를 해결해 봅시다: 숫자 배열이 주어졌을 때, 값이 3인 요소가 있는지 확인하세요.
있으면 '+++'를 출력하고, 없으면 '---'를 출력하세요.
먼저 '+++'를 출력해 보겠습니다.
배열의 모든 요소를 순회하며 현재 요소가 값 3과 같은지 if문으로 물어볼 것입니다.
같으면 '+++'를 출력하겠습니다:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
하지만 우리의 솔루션은 완벽하지 않습니다: 배열에 값 3이 하나가 아니라 여러 개 있다면,
'+++'가 여러 번 출력될 것입니다.
배열을 수정해서(값이 3인 요소를 두 개 만들고) 이를 확인해 보겠습니다:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // 여러 번 출력됩니다
}
}
문제를 수정해 봅시다: 요소를 이미 찾았다면 break로 루프를 종료하세요:
let arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // 루프를 종료합니다
}
}
이제 배열에 값 3인 요소가 전혀 없을 때 '---'가 출력되도록 해 보겠습니다.
흔한 실수는 우리의 if에 else를 추가하는 것인데, 이렇게 하면 '---'가
3이 아닌 모든 요소에 대해 출력될 것입니다:
let arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // 요소 3에서 출력됩니다
} else {
console.log('---'); // 요소 1, 2, 4, 5에서 출력됩니다
}
}
그래서, else를 추가하는 아이디어는 나쁘고 작동하지 않습니다.
이런 유형의 문제(이런 문제는 꽤 자주 마주칩니다)를 해결하기 위해 소위 플래그를 사용합니다.
위에서 이미 언급했듯이, 플래그는 true 또는 false라는 두 가지 값만 가질 수 있는 변수입니다.
자, 변수 flag를 만들어 봅시다: 이 변수가 true와 같으면 배열에 요소 3이 있고,
false와 같으면 그런 요소가 없다는 의미입니다.
먼저 변수 flag를 값 false로 설정하겠습니다. 즉, 배열에 요소 3이 없다고 가정하는 것입니다:
let arr = [1, 2, 3, 4, 5];
let flag = false; // 배열에 요소 3이 없다고 가정합니다
그런 다음 이전에 했던 것처럼 if문과 함께 루프를 시작합니다.
루프가 배열에 요소 3이 있다는 것을 발견하면 변수 flag를 값 true로 설정하고
break를 사용하여 루프에서 빠져나옵니다:
let arr = [1, 2, 3, 4, 5];
let flag = false; // 배열에 요소 3이 없다고 가정합니다
for (let elem of arr) {
if (elem == 3) {
flag = true; // 요소가 있습니다 - 변수 flag를 재정의합니다
break; // 루프에서 나갑니다
}
}
배열에 3이 있는지 없는지에 대한 답변은 루프 이후에만 줄 수 있습니다.
그리고 우리는 이미 그 답변을 가지고 있습니다: 루프 후에 변수 flag는
false로 남아 있거나, 루프가 배열에서 3을 발견했다면 그 값이 true로 바뀌었을 것입니다:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// 여기서 변수 flag는 true 또는 false입니다
이제 루프 이후에 변수 flag를 확인하고
화면에 '+++' 또는 '---'를 출력하는 if문을 만들 수 있습니다:
let arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
if (flag === true) {
console.log('+++');
} else {
console.log('---');
}
배열이 주어졌습니다:
let arr = ['a', 'b', 'c', 'd', 'e'];
이 배열에 'c' 요소가 있는지 확인하세요.
있으면 '+++'를 출력하고, 없으면 '---'를 출력하세요.
숫자가 소수인지 아닌지 확인하는 코드를 작성하세요. 소수는 오직 1과 자기 자신으로만 나누어지며, 다른 숫자로는 나누어지지 않습니다.