본문 바로가기
코딩/Web

자바스크립트 반복문과 배열

by Song1234 2024. 4. 16.

while 문

while(조건식) {
조건식의 결과가 true인 동안 반복할 문장;
...
}

do {
조건식의 결과가 true인 동안 반복할 문장;
...
}while(조건식);

do ~ while문은 조건식의 결과가 처음부터 false인 경우라도 한 번은 {}에 문장을 실행함

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>while 문</title>
</head>
<body>
    <h2>while 문</h2>
    <script>
        while(true){
            let num = Number(prompt('숫자를 입력하세요'))
            if(num % 2 == 0){
                console.log('짝수입니다. 프로그램을 종료합니다.')
                break
            }
            console.log('홀수입니다. 계속 진행합니다.')
        }
    </script>
</body>
</html>

for 문

for(초기값; 조건식; 증감식){
조건식의 결과가 true인 동안 반복할 문장;
...
}

let sum = 0;
for(let i=1; i<=10; i++){
    sum += i;
}
while문 비교
let i=1;
let sum=0;
while(i <= 10){
    sum += i;
    i++;
}
for문의 무한루프
for(;;){
    ...
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for 문</title>
</head>
<body>
    <h2>for 문</h2>
    <script>
        for(let i=1; i<=100; i++){
            if(i % 3 == 0){
                console.log('👏');
                continue;
            }
            console.log(i);
        }
    </script>
</body>
</html>

break 문

switch문 또는 반복중인(while, for) 루프 내에서 사용하여 해당 문장을 완전히 종료시키고 다음에 위치한 실행문으로 이동

continue 문

반복중인 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고 다음 반복문의 조건으로 넘어감

let num = 1;
while(num <= 10){
    console.log(num);
    num++;
    if (num == 5) continue;
    ...
    ...
}

문제

원하는 숫자를 입력받아 해당 숫자의 구구단을 출력하는 문서를 만들어보자.
(단, while문, for문으로 각각 출력)
prompt
원하는 단을 입력하세요. 4

console
4단
4 * 1 = 4
4 * 2 = 8
...
4 * 9 = 36

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>구구단</title>
</head>
<body>
    <h2>구구단</h2>
    <script>
        console.log('for문')
        let dan = Number(prompt('원하는 단을 입력하세요.'))
        console.log(`${dan}단`)
        for(let i=1; i<=9; i++){
            console.log(`${dan} * ${i} = ${dan*i}`)
        }
        console.log('----------')
        console.log('while문')
        let num = 1
        console.log(`${dan}단`)
        while(num <= 9){
            console.log(`${dan} * ${num} = ${dan*num}`)
            num++;
        }
    </script>
</body>
</html>

 

배열(Array)

  • 이름과 인덱스로 참조되는 정렬된 값의 집합(자료구조)
  • 배열을 구성하는 각각의 값을 배열요소라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스라고 함

배열 선언

let 변수명;

배열 초기화

변수명 = [요소1,요소2,요소3, ...];

let arr;
arr = [100, 200, 300];

배열 생성 함수

let 변수명 = Array(요소1, 요소2, 요소3, ...);

배열의 접근

let arr = [100, 200, 300];

arr[0] // 100
arr[1] // 200
arr[2] // 300

자바스크립트 배열의 특징

  1. 배열 요소의 타입이 고정되어 있지 않음
     let arr = [1, 1.5, '김사과', true];
  2. 배열 요소의 인덱스가 연속적이지 않아도 됨
     let arr;
     arr[0] = 1;
     arr[1] = 100;
     arr[4] = 10;
     // index 2, 3은 undefined
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열1</title>
</head>
<body>
    <h2>배열1</h2>
    <script>
        const user = [1, 'apple', '김사과', 20, '서울 서초구']
        console.log(user)

        console.log(user[0])
        console.log(user[1])
        console.log(user[2])
        console.log(user[3])
        console.log(user[4])
        console.log(user[5])

        user[4] = '서울 강남구'
        console.log(user[4])

        console.log(user.length)

        for(let i=0; i<user.length; i++){
            console.log(user[i])
        }
    </script>
</body>
</html>

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열2</title>
</head>
<body>
    <h2>배열2</h2>
    <script>
        const user = [1, 'apple', '김사과', 20, '서울 서초구']

        // push(): 배열의 요소를 추가
        user.push('여자');
        console.log(user)

        // pop(): 배열의 마지막 인덱스 번호에 있는 값을 제거후 리턴
        let temp = user.pop()
        console.log(user)
        console.log(temp)

        // shift(): 배열의 첫번째 인덱스 번호에 있는 값을 제거후 리턴
        console.log(user)
        temp = user.shift()
        console.log(user)
        console.log(temp)
        console.log('-----------')

        // concat(): 두 배열의 요소를 합침
        const profile = ['여자', 'A형', 'istp']
        result = user.concat(profile)
        console.log(result)
        console.log('-----------')

        // join(): 배열 요소 사이에 원하는 문자를 삽입
        result = user.join('🤣')
        console.log(result)
        console.log(typeof(user))
        console.log(typeof(result))
        console.log('-----------')

        const arr = ['a', 'z', 'c', 'f', 'r']
        // sort(): 배열의 요소를 오름차순
        arr.sort()
        console.log(arr)

        // reverse(): 배열을 역순으로 재배치
        arr.reverse()
        console.log(arr)

    </script>
</body>
</html>

배열을 이용한 반복

for in 문
변수에 배열의 인덱스 또는 객체의 key가 저장되며 반복

const arr = [10, 20, 30]
const user = {userid:'apple', name:'김사과', age:20}
// 예)
for(let i in arr){
    ...// i: 0, 1, 2 (i에는 인덱스 번호가 저장)
}

for(let i in user){
    ...// i: userid, name, age (i에는 키가 저장)
}

for of 문
변수에 배열의 value가 저장되며 반복

예)
for(let v of arr) {
    ... // v: 10, 20, 30
}

forEach 문
베열에서만 사용 가능하며 요소의 개수만큼 반복

    변수.forEach(function(변수1, 변수2, 변수3)){
        ...
    }

    변수1: value가 저장
    변수2: index가 저장
    변수3: 모든 배열요소가 저장
    * 변수2, 변수3은 생략가능
예)
const arr = [10, 20, 30]

arr.forEach(function(v, i, a){
    console.log(v); // 10, 20, 30
    console.log(i); // 0, 1, 2
    console.log(a); // [10, 20, 30], [10, 20, 30], [10, 20, 30]
})

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열3</title>
</head>
<body>
    <h2>배열3</h2>
    <script>
        const userArr = [1, 'apple', '김사과', 20, '서울서초구']
        const userObj = {userid: 'apple', name:'김사과', age:20}

        // for in 배열
        for(let i in userArr){
            console.log(`i:${i}, userArr[${i}]: ${userArr[i]}`)
        }

        console.log('----------')

        // for in 객체
        for(let i in userObj){
            console.log(`i:${i}, userArr[${i}]: ${userObj[i]}`)
        }
        console.log('----------')

        // for of 배열
        for(let v of userArr){
            console.log(`v:${v}`)
        }

        console.log('----------')

        // // for of 객체
        // Uncaught TypeError: userObj is not iterable
        // for(let v of userObj){
        //     console.log(`v:${v}`)
        // }
        console.log('----------')

        // forEach
        userArr.forEach(function(v, i, arr){
            console.log(`v:${v}, i:${i}, arr:${arr}`)
        })
    </script>
</body>
</html>

 

'코딩 > Web' 카테고리의 다른 글

자바스크립트 객체  (0) 2024.04.17
자바스크립트 함수  (1) 2024.04.16
자바스크립트 JavaScript  (1) 2024.04.15
CSS 우선순위와 Custom Properties, 애니메이션  (1) 2024.04.12
CSS 미디어 쿼리  (0) 2024.04.11