배열은 값의 목록으로 값마다 번호가 매겨져있고 리스트와 비슷한 객체다.
[...]
대괄호 안에 있는 부분이 배열 리터럴이다.
배열 값 하나를 배열의 요소라고 부른다.
배열 요소에 왼쪽부터 순서대로 0,1,2 순서로 번호가 매겨져 있다.
매긴 번호는 요소번호 또는 인덱스라고 부른다.
const fruits = ['사과', '바나나']
console.log(fruits)
// 사과,바나나
어떠한 요소도 작성하지 않을땐 빈 배열 생성.
const fruits = [];
console.log(fruits);
//[]
존재하지 않는 요소에 접근하면 undefined
를 반환한다.
let fruits = ['사과', ,'바나나']
console.log(fruits)
//사과, undefined , 바나나
length
프로퍼티 값을 가리켜 배열 길이라고 부른다.
length
프로퍼티에 현재의 배열 요소 개수보다 작고 0보다 큰 정수 값을 대입하면 배열 길이가 줄어든다.
즉, 배열 길이를 넘는 인덱스 번호에 할당된 배열 요소는 삭제된다.
const fruits = ['사과','딸기','바나나','수박']
fruits.length = 2;
console.log(fruits);
// 사과,딸기
원래 fruits
의 길이는 4이지만, 재할당으로 fruits
의 length
를 2로 할당해주고 출력했을땐,
배열 길이를 넘는 배열 요소가 뒤에서 부터 삭제된다.
Array()
생성자 함수는 Array.prototype.constructor
프로퍼티로 접근할 수 있다.
Array()
생성자 함수는 매개변수의 갯수에 따라 다르게 동작한다.
const fruits = new Array('사과','딸기','수박','포도'); //[사과,딸기,수박,포도]
const fruits = new Array(); //빈 배열 []을 생성
const fruits = new Array(2,4); //[2,4]
매개변수가 1개이고 숫자인 경우 매개변수로 전달된 숫자를 length
값으로 가지는 빈 배열을 생성한다.
const fruits = new Array(2);
console.log(fruits);
// [undefined,undefined]
없는 배열 요소에 값을 대입하면 새로운 요소가 추가된다.
const fruits = ['사과','딸기'];
fruits[2] = '포도';
console.log(fruits); // [사과,딸기,포도]
const fruits = ['사과','딸기'];
fruits.push('포도');
console.log(fruits); // [사과,딸기,포도]
자세한 메서드는 따로 정리해봐야겠다.
delete
사용하여 배열의 요소를 삭제해도 배열의 length 프로퍼티값은 바뀌지 않는다.
삭제한 요소만 사라진다.
const fruits = ["사과", "딸기","포도"];
delete fruits[1];
console.log(fruits); // ["사과",undefined,"포도"]
배열 요소를 추가하거나 삭제하면 인덱스가 0부터 시작되지 않는 배열이 만들어진다.
이러한 배열을 희소 배열이라고 한다.
const fruits = ["사과", "딸기","포도"];
delete fruits[1];
console.log(fruits); // ["사과",undefined,"포도"]
이 코드에서 출력했을때, 삭제한 요소 값을 undefined라고 표현하지만, 실제로 저 요소는 없는 것이다.
객체로 표현하면 {0:"사과",2:"포도"}
이렇게 표현된다.
객체로 표현한 걸 생각했을때 희소배열을 이해하기 쉬워진다.
아 배열 기초는 술술인데 메서드부터 막히겠지..ㅎ
지금까지 공부해본결과 객체가 젤 어려웠다..
객체의 기초는 정말 쉬웠는데...파면 팔수록 어려운 객체