JavaScript/Basic

반복문정리

yunajoe 2022. 10. 5. 09:32

JavaScript에서 사용할 수 있는 반복문의 형태

 

1. while 문

2. do / while 문

3. for 문

4. for / in 문

5. for / of 문

6. for each

 

while문

while (표현식) {

    표현식의 결과가 참인 동안 반복적으로 실행하고자 하는 실행문;

}



ex) 
var i = 1;
while(i<10){  // i가 10이하일때만 반복
	console.log(i);
}

do while문

do { 
    표현식의 결과가 참인 동안 반복적으로 실행하고자 하는 실행문;
}
while (조건문); 
//  조건문을 판단하기 전에 do 블록의 코드를 먼저 실행

ex) 
let i = 1; 
do {
 console.log(i);
 i++;
}  
while(i<=5);

for문

for (초기식; 표현식; 증감식) { 
    표현식의 결과가 참인 동안 반복적으로 실행하고자 하는 실행문; 
}

ex) 

for(var i=1; i< 10; i++){
	console.log(i) 
}

for / In문  

for / in 문은 일반적인 for 문과는 전혀 다른 형태의 반복문
for / in 문은 해당 객체의 모든 열거할 수 있는 프로퍼티(enumerable properties)를 순회하도록 한다

for (변수 in 객체) { 
    객체의 모든 열거할 수 있는 프로퍼티의 개수만큼 반복적으로 실행하고자 하는 실행문; 
}

ex)  

let brands = ['Google', 'Kakao', 'Naver', 'Kakao', "CoffeeBean","Starbucks"];   
for(let idx in brands){
    console.log()
}

for / of 문

for / of 문은 반복할 수 있는 객체(iterable objects)를 순회할 수 있도록 해주는 반복문

for (변수 of 객체) {

    객체의 모든 열거할 수 있는 프로퍼티의 개수만큼 반복적으로 실행하고자 하는 실행문;

}  

ex)  

let brands = ['Google', 'Kakao', 'Naver', 'Kakao', "CoffeeBean","Starbucks"];  
for(let element of brands){
    console.log(element);
}


ex) 

// 투표 결과 리스트
let votes = [
  '이재식', '이재식', '이규하', '이규하', '이규하',
  '이재식', '이재식', '이규하', '이규하', '이재식',
  '이규하', '이규하', '이규하', '이규하', '이재식',
  '이재식', '이규하', '이재식', '이재식', '이재식',
  '이재식', '이재식', '이규하', '이규하', '이규하',
  '이규하', '이규하', '이재식', '이규하', '이규하',
  '이규하', '이규하', '이재식', '이규하', '이규하',
  '이규하', '이재식', '이재식', '이재식', '이규하',
];

// 풀이 1
let voteCounter = {};  

for (let name of votes) {
  // 코드를 작성하세요.
    if(name in voteCounter === false) {   // if(!(name in voteCounter)) {}
        voteCounter[name] = 1
    }else{
      voteCounter[name] += 1
    }
    


}

// 풀이2
let voteCounter = {};  

for (let name of votes) {
  // 코드를 작성하세요.
  if (name in voteCounter) {
    voteCounter[name]+= 1;
  } else {
    voteCounter[name] = 1;
  }
}


// 후보별 득표수 출력
console.log(voteCounter); // { '이재식': 17, '이규하': 23 }

 

forEach

forEach 메서드도 배열을 순회하기 위해 사용되지만, 기본적인 for 반복문과는 다른 방식으로 함수를 사용합니다.

forEach 메서드는 다음 매개변수(parameter)와 함께 배열의 각 요소에 적용하게 될 콜백 함수(callback function)를 전달합니다.

Current Value (명명된 매개변수) - 처리할 현재 요소
Index (선택적 매개변수) - 처리할 현재 요소의 인덱스
Array (선택적 매개변수) - forEach 메서드를 호출한 배열

=====================================
- 우선 forEach 메서드를 사용해 배열을 순회하려면 콜백 함수 또는 익명 함수가 필요

- 콜백 함수는 각 요소에 대해 실행되며, 배열의 요소를 나타내는 매개변수를 반드시 하나 이상 사용해야 합니다.

기본 syntax
numbers.forEach(function(){
// code  
});
==================

// 함수선언
numbers.forEach(function(number){
    console.log(number);
});

// 화살표함수
numbers.forEach(number => console.log(number));


==============================


선택적 매개변수
인덱스(Index)
이어서 선택적 매개변수에 대해 알아봅시다.

첫 번째 선택적 매개변수는 각 요소의 순서를 나타내는 인덱스입니다.

즉 두 개의 매개변수를 활용하여 메서드를 사용하면 두 번째 매개변수를 통해 요소의 인덱스를 확인

const numbers = [1, 2, 3, 4, 5];

numbers.forEach((number, index, array) =>{
    console.log('index ' + index + ' value: ' + number, '원본 array ' + array); 
});

index 0 value: 1 원본 array 1,2,3,4,5
index 1 value: 2 원본 array 1,2,3,4,5
index 2 value: 3 원본 array 1,2,3,4,5        
index 3 value: 4 원본 array 1,2,3,4,5        
index 4 value: 5 원본 array 1,2,3,4,5   
==============================
==============================