230323 자바스크립트 배열

– 변수 / 하나의 값만 저장할 수 있습니다.

저장해야 할 값이 많으면 변수의 수도 늘어납니다.

예) 30개의 노트를 저장하려면 30개의 변수를 선언해야 합니다.

– 많은 양의 값/배열을 효율적으로 처리하는 방법

단일 메모리에 동일한 유형의 데이터를 저장하는 방법 (물체)
공간을 나누어 메모리에 저장할 수 있습니다.

.
이 공간에서 다음 주소가 생성됩니다.

색인라고 불리는 하다.
색인의 시작 주소입니다 0에서 시작.
색인붓다 다음을 사용하여 어레이에 액세스할 수 있습니다.

, 액세스한 경우 값을 저장하거나
값을 얻을 수 있습니다.
모든 데이터 유형과 개체를 포함할 수 있습니다.

.


var는 재선언 및 재할당이 가능하기 때문에 아래의 배열이 수정되는 문제가 있다.


값을 인덱스로 저장할 수 있습니다.


배열의 주소 로드(=인덱스) -> arrN(2) / 인덱스 주소에 포함된 주소 로드 2회



array1 다음에 push2를 적용한 경우

1 / 2 / push(‘한국’) <-push('한국') 적용


배열의 길이 / 배열에 저장할 수 있는 요소의 수 코드에서 배열의 길이를 얻으려면 간단히 점 연산자(.)를 사용하여 배열의 길이 필드를 읽으십시오.

배열 변수.길이;

※intArray.array variable.length;10 // 컴파일 에러 발생 -> 배열 길이 읽기만 가능.


for(int element:int Array) / 원소 개수만큼 배열 값 순으로 반복 가능


<!
DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <link rel="shortcut icon" href="#" type="image/x-icon"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>배열</title> </head> <body> <h1>배열</h1> - 하나의 저장소를 분할하여 데이터를 저장하는 객체 <br> - 나눠진 데이터의 저장소의 주소는 index라고 한다.

<br> - index는 0부터 시작된다.

<br> - 배열 객체에 담긴 대상을 요소(원소) 라고 한다.

<script type="text/javascript"> // 배열선언 키워드 : const 선언 const arr1 = (); //good const arr2 = new Array(); // int() arr3 = new int(3); // 인수 1개 일 때 공간을 의미 const arr3 = new Array(3); console.log(arr1); console.log(arr2); console.log(arr3); // 배열을 선언 및 초기화 const arr4 = (1,2,3,4); //good // Array() 인수가 두 개 이상일 경우 들어갈 요소를 의미 const arr5 = new Array(1,2,3,4,5); //bad console.log(arr4); console.log(arr5); // 배열에 어떠한 데이터 타입이든 요소 삽입이 가능하다 const arr6 = ('가', 1 , '나' , true , null , undefined , (1,2,3)); console.log(arr6); </script> <h2>배열에 값 대입 및 접근</h2> - 배열의 인덱스로 배열의 값에 접근 혹은 대입이 가능하다.

<script type="text/javascript"> // 배열의 시작 주소는 0부터 시작한다 const arr7 = (1,2); console.log(arr7(0), '배열 변수의 인덱스 번호로 요소 접근'); arr7(3) console.log(arr7); </script> <h2>배열객체의 속성 및 메서드</h2> (객체에는 속성과 메서드가 있다.

) <br> - length : 배열의 크기를 알수 있는 속성 <br> - push() : 배열에 값을 삽입하는 메서드 <br> - pop() : 배열의 마지막 요소 제거 후 제거된 요소 반환<br> - splice(삭제를 시작할 인덱스, 삭제할 요소수) : 특정배열 요소 삭제 <br> - Array.isArray(배열 변수명) : 배열 여부 확인<br> <script type="text/javascript"> const arr8 = (1,2); console.log(arr8.length, 'arr8의 배열의 크기'); let result1 = arr8.push(3); arr8.push(4,5); console.log(result1, arr8); let result2 = arr8.pop(); console.log(result2, arr8) let result3 = arr8.splice(1,2); console.log(result3, arr8) // isArray console.log(Array.isArray(result1), 'result1 배열여부확인'); console.log(Array.isArray(result3), 'result3 배열여부확인'); </script> <h2>얕은복사 vs 깊은복사</h2> - 얕은복사: 새로운 복합 객체를 만들고,(가능한 범위까지) 원본 객체를 가리키는 참조를 새로운 복합 객체에 삽입<br> 복사 후 같은 주소를 참조 (인스턴스 생성 x)<br> '주소 값'을 복사한다는 의미<br> - 깊은복사: 새로운 복합 객체를 만들고, 재귀적으로 원본 객체의 사본을 새로 만든 복합 객체에 삽입<br> 복사 후 다른 주소를 참조 (인스턴스 생성 o)<br> '실제 값'을 새로운 메모리 공간에 복사하는 것을 의미<br> <script type="text/javascript"> const targetArr1 = (1,2,3,4); const shallowCopyArr = targetArr1; // 주소 값만 복사 console.log(targetArr1 == shallowCopyArr, 'true 얕은복사'); shallowCopyArr(2) = 5; console.log(targetArr1); console.log(shallowCopyArr); const targetArr2 = (1,2,3,4); const deepCopyArr = (); // 새롭게 객체 생성 for(let num of targetArr2){ deepCopyArr.push(num); } console.log(targetArr2 == deepCopyArr, 'false깊은복사'); deepCopyArr(2) = 5; console.log(targetArr2); console.log(deepCopyArr); </script> </body> </html>