라라리라

2023.08.26 / Step 1 [DOM_기초문법_배열] - 코딩 38 일차 본문

코딩/2023 JavaScript DOM

2023.08.26 / Step 1 [DOM_기초문법_배열] - 코딩 38 일차

헤실 2023. 8. 26. 18:37

_0001_배열_생성_출력.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 생성</title>
</head>
<body>

    <script>
       
        /*
            [개념]
                class Array {


                }

        배열 객체(Array Object) 생성
                아래 세 가지 방법은 모두 같은 결과의 배열을 만들어 준다.
                (1) let 변수 = [값1, 값2, 값3, ...];
                (2) let 변수 = new Array(값1, 값2, 값3, ...);
                (3) let 변수 = new Array();
                    변수[0] = 값1;
                    변수[1] = 값2;
                    변수[2] = 값3;
                    ...
        */

        // 배열 생성
        let arr1 = [1, "a", true];  
        document.write(arr1 + "<br>");
       
        let arr2 = Array(1, "a", true);
        document.write(arr2 + "<br>");
       
        let arr3 = new Array();
        arr3[0] = 1;
        arr3[1] = "a";
        arr3[2] = true;
        document.write(arr3 + "<br>");

        // 배열 출력(1)
        for(let i=0; i<arr3.length; i++) {
            document.write(arr3[i] + " ");
        }
        document.write("<br>");

    // 배열 출력(2) : 향상된 for문
        for(i in arr3) {     //암기!!   == for(let i = 0; i < arr3.length; i++){}
            document.write(arr3[i] + " ");
        }

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

 

배열 생성

 


_0002_배열_확인_isArray.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 확인 - isArray()</title>
</head>
<body>

    <script>
       
        /*
            [개념] 배열 타입
                (1) 자바스크립트 배열은 객체(object) 타입이다.
                (2) Array.isArray() 를 통해 해당 변수가 배열인지 여부를 확인할 수 있다.
        */

        let arr = [1, "a", true];
       
        document.write(typeof arr, "<br>");             // object

        document.write(Array.isArray(arr) + "<br>");    // true
        document.write(Array.isArray(123));             // false
       
    </script>
   
</body>
</html>

 

배열 확인 - isArray()

 


_0003_배열_인덱스검색_indexOf.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 인덱스 검색 - indexOf()</title>
</head>
<body>
   
    <script>
       
        /*
            [개념] 배열 인덱스 검색
                (1) indexOf()
                (2) 인자로 주어진 값을 검색해 첫 번째 인덱스를 반환한다.
                (3) 존재하지 않으면 -1을 반환한다.
        */

        let arr = ["미금", "당곡", "정자", "수서", "양재", "당곡"];

        /*
            [문제]
                arr배열에서 양재의 인덱스를 출력하시오.
        */
        let idx = arr.indexOf("강남");
        if(idx != -1) {
            document.write(idx);
        } else {
            document.write("없는 단어입니다.<br>")
        }





        let index = arr.indexOf("정자");
        document.write(index + "<br>");              // 2

        index = arr.indexOf("당곡");
        document.write(index + "<br>");              // 1
       
        // 두번째 당곡 글자의 위치
        index = arr.indexOf("당곡", 2);
        document.write(index + "<br>");              // 5
       
        index = arr.indexOf("강남");
        document.write(index);                       // -1

    </script>

</body>
</html>

 

배열 인덱스 검색 - indexOf()

 


_0004_배열_삭제_맨뒤에_pop.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 삭제 - pop()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 맨뒤에 요소 삭제
                (1) pop()
                (2) 배열의 가장 마지막 요소를 제거한다.
                (3) 배열의 길이는(length)는 1씩 줄어든다.
                (4) 제거한 요소를 반환한다.
        */

        let arr = ["미금", "정자", "수서", "양재", "당곡"];
        // 방법1) pop() 메서드 이용해 삭제
        // arr.pop();
        document.write(arr.pop() + "<br>");         // 당곡
        document.write(arr + "<br>");                   // 미금,정자,수서,양재

        // 방법2) 새로운 배열을 만들어 삭제
        let temp = arr;
        arr = [];
        for(let i=0; i<temp.length - 1; i++) {
            arr.push(temp[i]);
        }
        document.write(arr);                                // 미금,정자,수서
       
    </script>

</body>
</html>

 

배열 삭제 - pop()

 


_0004_배열_삭제_맨앞에_shift.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 삭제 - shift()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 맨앞에 요소 삭제
                (1) shift()
                (2) 배열의 가장 첫번째 요소를 제거한다.
                (3) 배열의 길이는(length)는 1씩 줄어든다.
                (4) 제거한 요소를 반환한다.
        */

        let arr = ["미금", "정자", "수서", "양재", "당곡"];
        // 방법1) shift() 메서드 이용해 삭제
        // arr.shift();
        document.write(arr.shift() + "<br>");       // 미금
        document.write(arr + "<br>");               // 정자,수서,양재,당곡
       
        // 방법2) 새로운 배열을 만들어 삭제
        let temp = arr;
        arr = [];
        for(let i=1; i<temp.length; i++) {
            arr.push(temp[i]);
        }
        document.write(arr);                        // 수서,양재,당곡
       
    </script>

</body>
</html>

 

배열 삭제 - shift()

 


_0004_배열_추가_맨뒤에_push.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 추가 - push()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 맨뒤에 요소 추가
                (1) push()
                (2) 배열의 제일 끝에 새로운 요소를 추가한다.
                (3) 추가하면 배열의 길이는(length)는 증가한다.
                (4) 변경된 배열의 길이를 반환한다.
        */

        let arr = ["미금", "정자", "수서"];
        // 방법1) push() 메서드 이용해 추가
        arr.push("양재");
        // document.write(arr.push("양재") + "<br>");     // 4
        document.write(arr + "<br>");                       // 미금,정자,수서,양재
       
        // 방법2) 인덱스를 지정하여 추가
        arr[arr.length] = "당곡";
        document.write(arr + "<br>");                       // 미금,정자,수서,양재,당곡
       
    </script>

</body>
</html>

 

배열 추가 - push()

 


_0004_배열_추가_맨앞에_unshift.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 추가 - unshift()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 맨앞에 요소 추가
                (1) unshift()
                (2) 배열의 가장 앞에 새로운 요소를 추가한다.
                (3) 추가하면 배열의 길이는(length)는 증가한다.
                (4) 변경된 배열의 길이를 반환한다.
        */

        let arr = ["미금", "정자", "수서"];
        // 방법1) unshift() 메서드 이용해 추가
        arr.unshift("양재");
        // document.write(arr.unshift("양재") + "<br>");      // 4
        document.write(arr + "<br>");                           // 양재,미금,정자,수서
       
        // 방법2) 인덱스를 지정하여 추가
        arr.push(0);
        for(let i=arr.length-1; i>0; i--) {
            arr[i] = arr[i - 1];
        }
        arr[0] = "당곡";
        document.write(arr + "<br>");                           // 당곡,양재,미금,정자,수서
       
    </script>

</body>
</html>

 

배열 추가 - unshift()

 


_0005_배열_삭제_splice.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 삭제 - splice()</title>
</head>
<body>

    <script>
       
        /*
            [개념] 배열 삭제
                1) splice(시작위치, 삭제할 요소의 개수) : 시작위치부터 개수만큼 삭제
                2) splice(시작위치) : 시작위치부터 이후 모두 삭제
        */

        // 삭제
        let arr = ["미금", "정자", "수서", "양재", "당곡"];
        document.write(arr + "<br>");  

        arr.splice(3, 2);                           // 3번부터 2개 삭제
        document.write(arr + "<br>");               // 미금,정자,수서

        // 가장 많이 이용하는 것은 값 1개 삭제이며,
        // 아래와 같은 형태로 사용한다.
        // [문제] 수서만 삭제하시오.
        let idx = arr.indexOf("수서");
        arr.splice(idx, 1);
        for(i in arr){
            document.write(arr[i] + " ");
        }
        document.write("<br>");

    </script>

</body>
</html>

 

배열 삭제 - splice()

 


_0006_배열_추출_slice.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 추출 - slice()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 추출
                (1) slice(시작위치, 마지막위치)
                (2) 원본 배열은 유지하고 시작위치 부터 마지막 위치 미만까지의
                (3) 새로운 배열을 반환한다.
        */

        let arr = ["미금", "정자", "수서", "양재", "당곡"];

        let rs = arr.slice();                   // 0번부터 끝까지 추출
        document.write(rs + "<br>");            // 미금,정자,수서,양재,당곡
       
        rs = arr.slice(1);                      // 1번부터 끝까지 추출
        document.write(rs + "<br>");            // 정자,수서,양재,당곡
       
        rs = arr.slice(1, 4);                   // 1번부터 4번미만까지 추출
        document.write(rs + "<br>");            // 정자,수서,양재

        document.write(arr);                    // 미금,정자,수서,양재,당곡

    </script>

</body>
</html>

 

배열 추출 - slice()

 


_0007_배열_연결_join.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 연결 - join()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 연결
                (1) join()
                (2) 배열의 모든 요소를 하나의 문자열로 연결해 반환한다.
        */

        let arr = ["미금", "정자", "수서", "양재", "당곡"];

        let rs = arr.join();
        document.write(rs + " : " + typeof rs + "<br>");    // 미금,정자,수서,양재,당곡 : string
       
        rs = arr.join("");
        document.write(rs + "<br>");    // 미금정자수서양재당곡
       
        rs = arr.join("-");
        document.write(rs + "<br>");    // 미금-정자-수서-양재-당곡

    </script>

</body>
</html>

 

배열 연결 - join()

 


_0008_배열_합치기_concat.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 합치기 - concat()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 합치기
                (1) concat()
                (2) 인자로 주어진 배열을
                    기존 배열에 합쳐서 새 배열을 반환한다.
        */

        let x = [1, 2, 3];
        let y = [4, 5, 6];

        let rs = x.concat(y);
        document.write(rs + "<br>");    // 1,2,3,4,5,6

    </script>

</body>
</html>

 

배열 합치기 - concat()

 


_0009_배열_정렬_문자_sort.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 문자 정렬 - sort()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 문자열 정렬
                (1) sort()
                (2) 문자열의 유니코드 값에 따라 오름차순으로 정렬한다.
                (3) 내림차순으로 정렬하려면 익명함수로 제공해야한다.
        */

        let str1 = "a";
        let str2 = "b";

        // charCodeAt(인덱스) 은 문자열을 아스키 코드로 변환해준다.
        document.write(str1.charCodeAt(0) + ", " + str2.charCodeAt(0) + "<br>");

        // 문자열을 대소비교할 경우, 아스키코드값으로 변환해 대소비교가 가능하다.
        document.write((str1 < str2) + "<br>");     // true
        document.write((str1 > str2) + "<br>");     // false

       
        //arr = ["미금", "당곡", "정자", "수서", "양재"];
        let arr = [140, 13, 27];
        //           1        0    4       2       3
        // 문자열[오름차순 정렬]
        //arr.sort();
        // 문자열[내림차순 정렬]
        //arr.reverse();

        //document.write(arr + "<br>");       // 당곡,미금,수서,양재,정자
       
        // [오름차순 정렬] 숫자정렬 방법(1)
       /* arr.sort(function(a, b){
            if(a < b) return -1;
            if(a > b) return 1;
            if(a == b) return 0;
        });
        */
             
         //[내림차순 정렬] 숫자정렬 방법(2)
         function sortNumber(a, b) {
             if(a > b) return -1;
             if(a < b) return 1;
             if(a == b) return 0;
         }
         arr.sort(sortNumber);
       

        // 반전시키기
        // arr.reverse();
       
        document.write(arr + "<br>");       // 정자,양재,수서,미금,당곡

    </script>

</body>
</html>

 

배열 문자 정렬 - sort()

 


_0009_배열_정렬_숫자1_sort.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 숫자 정렬 - sort()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 숫자 정렬
                (1) sort() 는 모두 문자열로 판단해 정렬하기 때문에
                (2) 숫자의 경우 제대로 정렬이 되지 않는다.
                (3) 숫자형식으로 정렬하려면 익명함수로 제공해야한다.
        */

        let arr = [6, 7, 2, 1, 9, 77];

        arr.sort();
        document.write(arr + "<br>");       // 1,2,6,7,77,9

        // [오름차순 정렬]
        /*
        arr.sort(function(a, b) {
            return a - b;
        });
        */

        // [내림차순 정렬]
        arr.sort(function(a, b) {
            return b - a;
        });
       
        document.write(arr + "<br>");       // 77,9,7,6,2,1
       
    </script>

</body>
</html>

 

배열 숫자 정렬 - sort()

 


_0009_배열_정렬_숫자2_sort구현.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 숫자 정렬 - sort() 구현하기</title>
</head>
<body>
   
    <script>

        /*
            [개념] sort() 구현하기
        */

        let arr = [6, 7, 2, 1, 9, 77];

        // [오름차순 정렬]
        /*
        function check(a, b){
            return a - b;
        }
        */

        // [내림차순 정렬]
        function check(a, b){
            return b - a;
        }

        function mySort(arr) {
            for(let i=0; i<arr.length; i++) {
                for(let j=i; j<arr.length; j++) {
                    if(check(arr[i], arr[j]) > 0) {
                        let temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }

        mySort(arr);
        document.write(arr + "<br>");   // 77,9,7,6,2,1

    </script>

</body>
</html>

 

배열 숫자 정렬 - sort() 구현하기

 


_0010_배열_반전_reverse.html

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>배열 반전 - reverse()</title>
</head>
<body>
   
    <script>

        /*
            [개념] 배열 반전
                (1) reverse()
                (2) 배열의 순서를 반전한다.
        */

        let arr = ["a", "c", "b", "d"];

        // [오름차순 정렬]
        arr.sort();
        document.write(arr + "<br>");       // a,b,c,d
       
        // [내림차순 정렬]
        arr.reverse();
        document.write(arr + "<br>");       // d,c,b,a

    </script>

</body>
</html>

 

배열 반전 - reverse()