[TIL 21] 배열

_dodo_hee·2021년 3월 9일
0

JAVASCRIPT

목록 보기
13/17
post-thumbnail
post-custom-banner

배열 Array

배열은 값의 목록으로 값마다 번호가 매겨져있고 리스트와 비슷한 객체다.

[...] 대괄호 안에 있는 부분이 배열 리터럴이다.
배열 값 하나를 배열의 요소라고 부른다.
배열 요소에 왼쪽부터 순서대로 0,1,2 순서로 번호가 매겨져 있다.
매긴 번호는 요소번호 또는 인덱스라고 부른다.

# 배열 리터럴

기본 사용법

const fruits = ['사과', '바나나']

console.log(fruits)
// 사과,바나나

빈 배열

어떠한 요소도 작성하지 않을땐 빈 배열 생성.

const fruits = [];

console.log(fruits);

//[]

undefined

존재하지 않는 요소에 접근하면 undefined를 반환한다.

let fruits = ['사과', ,'바나나']

console.log(fruits)

//사과, undefined , 바나나

# length

length 프로퍼티 값을 가리켜 배열 길이라고 부른다.
length 프로퍼티에 현재의 배열 요소 개수보다 작고 0보다 큰 정수 값을 대입하면 배열 길이가 줄어든다.
즉, 배열 길이를 넘는 인덱스 번호에 할당된 배열 요소는 삭제된다.

const fruits = ['사과','딸기','바나나','수박']

fruits.length = 2;
console.log(fruits);

// 사과,딸기

원래 fruits의 길이는 4이지만, 재할당으로 fruitslength를 2로 할당해주고 출력했을땐,
배열 길이를 넘는 배열 요소가 뒤에서 부터 삭제된다.

# Array() 생성자 함수

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]

배열 요소의 추가와 삭제

1. 배열 요소 추가

없는 배열 요소에 값을 대입하면 새로운 요소가 추가된다.

방법 1

const fruits = ['사과','딸기'];
fruits[2] = '포도';

console.log(fruits); // [사과,딸기,포도]

방법 2 (메서드)

const fruits = ['사과','딸기'];
fruits.push('포도');

console.log(fruits); // [사과,딸기,포도]

자세한 메서드는 따로 정리해봐야겠다.

2. 배열 요소 삭제

delete 사용하여 배열의 요소를 삭제해도 배열의 length 프로퍼티값은 바뀌지 않는다.
삭제한 요소만 사라진다.

const fruits = ["사과", "딸기","포도"];
delete fruits[1];

console.log(fruits); // ["사과",undefined,"포도"]

# 희소배열

배열 요소를 추가하거나 삭제하면 인덱스가 0부터 시작되지 않는 배열이 만들어진다.
이러한 배열을 희소 배열이라고 한다.

const fruits = ["사과", "딸기","포도"];
delete fruits[1];

console.log(fruits); // ["사과",undefined,"포도"]

이 코드에서 출력했을때, 삭제한 요소 값을 undefined라고 표현하지만, 실제로 저 요소는 없는 것이다.

객체로 표현하면 {0:"사과",2:"포도"} 이렇게 표현된다.
객체로 표현한 걸 생각했을때 희소배열을 이해하기 쉬워진다.


아 배열 기초는 술술인데 메서드부터 막히겠지..ㅎ
지금까지 공부해본결과 객체가 젤 어려웠다..
객체의 기초는 정말 쉬웠는데...파면 팔수록 어려운 객체

profile
무럭무럭 자라나는 도도 개발성장일기
post-custom-banner

0개의 댓글