for
, while
구문 학습for...in
과 for...of
비교에라토스테네스의 체
를 이용한 소수 확인 알고리즘
Set
을 활용한 배열 중복 제거
같거나 비슷한 코드를 여러 번 실행시켜야할때 반복문을 사용합니다.
for
문은 조건식이 거짓으로 될때까지 반복 수행합니다.
for ([초기화]; [조건식]; [증감문]) {
수행할 코드 작성
}
[초기화]에서 변수를 선언과 동시에 사용이 가능합니다
for (let i = 0; i < 5; i++) {
console.log(`i의 값은 ${i}입니다`)
}
기본 사용법 비교
const arr = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i += 1) {
console.log(arr[i]);
}
for (const item of arr) {
console.log(item);
}
for (const item in arr) {
console.log(item);
}
arr.forEach((value, index, array) => {
console.log(value); // 1
console.log(index); // 0
console.log(array); // [1, 2, 3, 4, 5]
})
for...in이 객체의 반복을 위해 만들어졌습니다.
배열에서도 사용할 수 있지만 객체에 사용하는 것 대비 10~100배 정도 느립니다. 그렇기 때문에 배열에서는 Array.prototype.forEach(), for...of를 사용하는 것이 좋습니다.
또한 for...in 루프는 객체의 모든 열거가능한 속성에 대해 반복하기 때문에 필요 없는 프로퍼티들
이 문제를 일으킬 가능성도 있습니다.
while( 조건식) {
수행할 코드 작성
}
조건에 관계 없이 무조건 한번은 수행하고 싶다면 do...while
구문을 사용하면 됩니다.
do {
수행할 코드 작성
} while( 조건식)
1과 자기 자신을 제외한 약수를 가지지 않는 1이상의 자연수를 소수라고 합니다.
(에라토스테네스의 체) n의 제곱근까지만 반복해보면 이 수가 소수인지 알 수 있다.
function isPrime(num) {
// 1. 1은 소수가 아님
// 2. 2를 제외한 짝수는 소수가 아님 => 홀수만 확인하면 됨
// 3. 제곱근까지만 반복하면 소수여부 판단 가능(에라토스테네스의 체)
if(num === 1) {
return false;
}
if( num === 2) {
return true;
}
if( num % 2 === 0) {
return false;
}
const sqrt = Math.sqrt(num);
// 3이상의 홀수만 확인하면 되므로 3부터 2씩 증가
for( let i = 3; i <= sqrt; i += 2) {
if(num % i === 0) {
return false;
}
}
return true;
}
const array = [1, 2 ,3 ,4, 1, 2, 3]
const set = new Set(array);
const uniqArray = Array.from(set);