TIL - 2022.10.25

흔한 감자·2022년 10월 25일
0

코드스테이츠

목록 보기
2/18

TIL - 학습내용

  • 반복문 for, while 구문 학습
  • for...infor...of 비교
  • 에라토스테네스의 체를 이용한 소수 확인 알고리즘
  • Set을 활용한 배열 중복 제거

반복문


같거나 비슷한 코드를 여러 번 실행시켜야할때 반복문을 사용합니다.


for문

for문은 조건식이 거짓으로 될때까지 반복 수행합니다.

for ([초기화]; [조건식]; [증감문]) {
  수행할 코드 작성
}

[초기화]에서 변수를 선언과 동시에 사용이 가능합니다

for (let i = 0; i < 5; i++) {
  console.log(`i의 값은 ${i}입니다`)
}

for문과 for...in, of 그리고 foreach

기본 사용법 비교

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 vs for...of

for...in이 객체의 반복을 위해 만들어졌습니다. 배열에서도 사용할 수 있지만 객체에 사용하는 것 대비 10~100배 정도 느립니다. 그렇기 때문에 배열에서는 Array.prototype.forEach(), for...of를 사용하는 것이 좋습니다.
또한 for...in 루프는 객체의 모든 열거가능한 속성에 대해 반복하기 때문에 필요 없는 프로퍼티들이 문제를 일으킬 가능성도 있습니다.


while 구문

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);
profile
프론트엔드 개발자

0개의 댓글