본문 바로가기

JavaScript

02. 배열(Array)과 객체(Object)

1. 배열(Array)

 

 

배열 타입을 선언하지 않는다는 것을 제외하고는 자바와 유사하다.

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>JAVA SCRIPT</title>
        <link rel="icon" href="../img/chrome.png">
        <style>

        </style>
    </head>
    <body>
        
    </body>
    <script>
        // 배열 선언 1
        var arrNum = [];

        // 배열 선언 2
        var arrStr = new Array();

        // 배열에 데이터 넣기
        arrNum = [1, 2, 3, 4]; // 한번에 넣는 방법
        arrNum[4] = 5; // 특정 인덱스를 지정해서 넣는 방법
        arrNum.push(6); // push() 함수를 통해 넣는 방법 : 마지막 인덱스 바로 다음에 넣는다.
        // 배열의 크기 확인
        console.log(arrNum.length)
        // 배열안의 값 확인
        console.log('arrayNum 안의 값 : ' + arrNum);
        console.log('arrayNum 안의 값 : ', arrNum);

        // 정말로 배열 안에는 아무 데이터 타입이나 다 들어가는가?
        arrStr.push(1);
        arrStr.push('A');
        arrStr.push(false);
        arrStr.push([10, 20, 30]);
        arrStr.push(function(){
            console.log('함수 실행')
        });

        console.log(arrStr[0]);
        console.log(arrStr[1]);
        console.log(arrStr[2]);
        console.log(arrStr[3]);
        arrStr[4]();

    </script>
</html>

 

 

 

 

 

2. 배열 함수

 

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>JAVA SCRIPT</title>
        <link rel="icon" href="../img/chrome.png">
        <style>

        </style>
    </head>
    <body>
        <button onclick="arrPush()">push</button>
        <button onclick="arrPop()">pop</button>
        <button onclick="arrUnshift()">unshift</button>
        <button onclick="arrShift()">shift</button>       
        <hr/>
        <button onclick="arrSlice()">범위 자르기</button>
        <button onclick="spliceDel()">splice Del</button>
        <button onclick="spliceAdd()">splice Add</button>
        <hr/>
        <button onclick="arrConcat()">배열 병합</button>
        <button onclick="arrDel()">delete</button>
        <button onclick="arrJoin()">join</button> 
    </body>
    <script>
        function arrJoin(){
            console.log(arry);
            console.log(arry.join('-'));
        }
        function arrDel(){
            console.log(arry);
            delete arry[2]; //공간은 놔두고 값을 null 의 상태로 만들기 때문에 위험하다.
            arry[2] = '';
            console.log(arry);
        }
        function arrConcat(){
            // console.log('concat');
            // 배열1.concat(배열2, 배열3,...);
            var arr1 = [1,2,3,4,5];
            var arr2 = ['a','b','c','d','e'];
            var newArr = arr1.concat(arr2); // 앞에 있는 배열을 기준으로 순서대로 합친다.
            console.log(newArr);
        }
        // splice 는 특정범위의 요소를 삭제하거나 수정, 추가 가능
        var arry = ['가','나','다','라','마','바','사'];

        function spliceAdd(){
            // splice(x번 인덱스부터, n개를 삭제, [추가,...]);
            console.log(arry);
            // arry.splice(2,2,'C','D'); // 수정
            // splice 로 2번 인덱스에 C, D 추가해 보기
            arry.splice(2,0,'C','D');
            console.log(arry);
        }

        function spliceDel(){
            // console.log('splice del')
            // splice(x번 인덱스부터, n개를 삭제);
            console.log(arry);
            arry.splice(2,2);
            console.log(arry);
        }

        // 원본은 유지되고, 잘라낸 배열을 반환
        function arrSlice(){
            var numArr = [0,1,2,3,4,5];
            // (보여줄 인덱스, 버릴 인덱스)
            numArr.slice(1,3);
            var newArr = numArr.slice(1,3);
            console.log(numArr, '->', newArr);
        }
        var arr = [];
        var i = 1;

        function arrPush(){
            arr.push(i);
            i++;
            console.log(arr);
        }
        function arrPop(){
            var num = arr.pop();
            console.log(num, arr);
        }
        function arrShift(){
            var num = arr.shift();
            console.log(num, arr);
        }
        function arrUnshift(){
            arr.unshift(i);
            i++;
            console.log(arr);
        }

    </script>
</html>

 

 

 

 

 

*Shallow Copy*

 

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>JAVA SCRIPT</title>
        <link rel="icon" href="../img/chrome.png">
        <style>

        </style>
    </head>
    <body>
        
    </body>
    <script>
        var x = 10;
        var y = x; // 10
        x = 20;
        console.log(x,y);

        var a = [1,2,3,4,5];
        var b = a;
        console.log('a : ',a);
        console.log('b : ',b);

        a[0] = 50;
        a[4] = 100;
        console.log('a : ',a);
        console.log('b : ',b);

        /*
            a배열의 값을 수정했는데, b배열의 값도 함께 수정되는 현상
            이것을 shallow copy 라고 부른다. (실수가 많이 일어나는 부분)
            b = a 가 a 배열이 b 에 복사된 것이 아니라 링크 된 것으로 보는게 맞다.
        */

        var src = ['A','b','C','D','E'];
        var dest = [];

        for (var i = 0; i < src.length; i++) {
            dest[i] = src[i];
        }
        console.log(src,dest);
        src[0] = 1;
        dest[4] = 100;
        console.log(src,dest);

    </script>
</html>

 

 

 

 

자바스크립트에서는 3차원 배열은 지원하지 않는다.

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>JAVA SCRIPT</title>
        <link rel="icon" href="../img/chrome.png">
        <style>

        </style>
    </head>
    <body>
        
    </body>
    <script>
        // 자바스크립트 에서는 정식적으로 3차원까지는 지원하지 않는다. (다른 방법을 사용해야 함)
        var apt = [
            [0,1,2,3,4],
            [10,11,12,13,14],
            [20,21,22,23,24],
            [30,31,32,33,34],
            [40,41,42,43,44]
        ];
        console.log(apt);
        console.log(apt[3][2]);
        console.log(apt[2][2]);
        console.log(apt[4][4]);

        var royal = [];
        // 아파트 처럼 5개층 5개호 아파트로 만들어 보자(push 사용해서)
        royal.push([0,1,2,3,4]);
        royal.push([10,11,12,13,14]);
        royal.push([20,21,22,23,24]);
        royal.push([30,31,32,33,34]);
        royal.push([40,41,42,43,44]);
        console.log(royal);
        

    </script>
</html>

 

 

 

 

3. 객체(Object)

 

 

 

자바스크립트에서 여러 데이터를 담을 수 있는 것arrayObject 가 있다.


Object 는 어떤 값이든 담을 수 있다.


그리고 Object 안에 담긴 값을 우리는 속성(attribute) 라고 부른다.

 

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>JAVA SCRIPT</title>
        <link rel="icon" href="../img/chrome.png">
        <style>

        </style>
    </head>
    <body>

    </body>
    <script>
        // 오브젝트 만드는 방법 1 - 초기에 값을 넣고 시작
        var car = {type:'Fiat', model:500, color:'white'};
        console.log(car);
        // 오브젝트 만드는 방법 2 - 리터럴
        var person = {};
        // 오브젝트 만드는 방법 3 - new 키워드 사용
        var computer = new Object();

        //object 에 값 추가 하기 1 - java 에서 객체 사용 하듯이
        person.name = 'lee';
        person.gender = 'male';
        person.age = 26;
        console.log(person);

        //object 에 값 추가 하기 2 - 오브젝트는 인덱스가 문자열인 배열이다.
        computer['cpu'] = 'octa core';
        computer['ram'] = '16GB';
        computer['ssd'] = '2TB';
        computer['price'] = 1400000;
        console.log(computer);

        // 오브젝트 안에도 함수가 들어갈 수 있다.
        person.work = function(){
            console.log('일한다.');
        };
        console.log(person);
        // 위에 선언한 함수 실행해 보기
        person.work();
        console.log('name : ',person.name);
        console.log('age : ',person['age']);
        // computer 내용도 모두 출력 해 보자
        console.log('CPU : ',computer.cpu);
        console.log('RAM : ',computer.ram);
        console.log('SSD : ',computer.ssd);
        console.log('PRICE : ',computer.price);

    </script>
</html>

 

'JavaScript' 카테고리의 다른 글

01. JavaScript의 기초  (0) 2024.03.07