배열은 1개의 변수에 여러개의 값을 순차적으로 저장할때 사용한다
자바스크립트의 배열은 객체이며 , 유용한 내장 메소드를 포함하고 있다
배열은 Array 생성자로 생성된 Array 타입의 객체이며 , 프로토 타입 객체는 Array.prototype이다
1.1 배열 리터럴
( 리터럴 뜻 = 데이터 그 자체를 뜻함 )
예를 들어 const a = 1; 에서 a는 상수이고 , 1은 리터럴이다
0개 이상의 값을 쉼표로 구분하여 대괄호 ([])로 묶는다 .
첫번째 값은 인덱스 '0' 으로 읽을 수 있다
존재 하지 않는 요소에 접근하면 undefined 를 반환한다
1.2 Array() 생성자함수
배열은 일반적으로 배열 리터럴 방식으로 생성하지만 , 배열 리터럴 방식도 결국 내장 함수( 자바스크립트에서 자체적으로 제공하는 함수) Array() 생성자 함수로 배열을 생성하는 것을 단순화 시킨 것이다
Array() 생성자 함수는 Array.prototype. constructor 프로퍼티로 접근할수 있다
즉 배열의 프로토타입 객체에 속해 있으며, 배열을 초기화하고 생성하는 역할을 한다
const myArray = new Array(1,2,3)
이 코드에서 Array 생성자 함수를 사용하여 myArray 라는 배열을 만들었다 배열을 요소는 1,2,3, 초기화가 되었다
생성자 함수를 사용하여 배열을 만들때는 new Array (...) 형태를 사용하며, 원하는 요소를 인자로 전달할수 있다
매개변수( 함수를 정의할때 사용하는 변수 )
인자 ( 함수를 호출할때 실제로 넘겨주는 값)
2 배열 요소의 추가와 삭제
2.1 배열 요소의 추가
객체가 동적으로 프로퍼티(객체와 관련있는 값,js에서 정렬되지 않은 프로퍼티의 모음)를 추가할수 있는 것처럼
배열도 동적으로 요소를 추가 할 수 있다
이떄 순서에 맞게 값을 할당할 필요는 없고 , 인덱스를 사용하여 필요한 위치에 값을 할당한다
배열의 길이(length ) 는 마지막 인덱스를 기준으로 산정한다
object.key() 메서드는 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환한다
object에서 직접 찾은 열거 가능한 문자열 키 속성 이름에 해당하는 문자열을 요소로 하는 배열을 반환한다
이는 for in 루프가 프로토타입 체인의 속성도 열거한다는 점을 제외하면 for .. in 루프를 사용하여 반복하는 과정과 동일하다
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
2.2배열 요소의 삭제
배열은 객체이기 때문에 배열의 요소를 삭제하기 위해 delete 연산자를 사용할수 있다
이떄 length 에는 변함이 없다
해당 요소는 완전히 삭제하여 length 도 반영되게 하기 위해서는 Array.prototype.splice 메소드를 사용한다 .
3. 배열의 순회
(순회 = 배열에 저장된 여러 개의 값에 순서대로 하나씩 접근하는 것을 의미합니다)
객체의 프로퍼티를 순회할 때 for ... in 문을 사용한다
그러나 배열은 객체 이기 때문에 프로퍼티를 가질수 있다
for ... in 문을 사용하면 배열 요소뿐만 아니라 불필요한 프로퍼티까지 출력될수 있고 요소들의 순서를
보장하지 않으므로 배열을 순회하는데 적합하지 않다
즉 배열의 순회에는 forEach 메소드 , for문 , for of 문을 사용하는 것이 좋다