JS 배열과 객체

오늘은 대량의 데이터를 다룰 때 유용하게 쓰이는 배열과 객체에 대해 알아보자.
배열과 객체는 Boolean 혹은 String 등과 같이 별도의 자료형으로 취급하는데, 정확히는 참조 타입[Reference Type]이라고 한다.
1. 배열
- 배열은 순서를 의미하는 인덱스와 각 인덱스별로 값을 지니는 요소(Element)로 구성된다.
문법
let '배열명' = [ element0, element1, element2, ~ ];
값접근식
'배열명'[접근하고자 하는 요소의 인덱스 값];
배열을 활용한 속성 / 메소드
- '배열명'.length; >> 배열의 길이 반환 (인덱스+1)
- '배열명'.push('추가하고자하는 요소의 값'); >> 요소를 맨마지막 인덱스로 추가
- '배열명'.unshift('추가하고자하는 요소의 값'); >> 요소를 맨 첫번째 인덱스로 추가
- '배열명'.pop(); >> 배열 마지막 값 삭제
- '배열명'.shift(); >> 배열 첫번째 값 삭제
- '배열명'.filter(함수); >> 함수 조건에 맞는 밸류만 추출
- 추가로 .splice를 이용하면 배열의 중간에서도 자유롭게 삭제 및 추가가 가능하다. 자세한 설명은 링크 참조 (www.javascripttutorial.net/javascript-array-splice/)
- '배열1'.concat('배열2'); >> 배열 합치기
- let 변수명 = [...'배열1',...'배열2']; >> 배열 합치기
- console.table('배열명'); >> 배열을 더욱 시각적으로 표현해 출력
배열과 객체 구분법
Array.isArry('배열명')
배열과 객체는 흔히 쓰는 typeof 명령문으로는 구별을 할 수 없다. 왜냐하면 둘 다 Object(객체)로 분류되기 때문이다.
따라서 배열과 객체를 구분하기 위해서는 Array.isArray를 통해 true가 나오면 배열, false가 나오면 배열 이외의 자료형임을 이용한다.
배열내 요소 검색법
'배열명'.indexOf('찾고자하는 요소의 값')
indexOf를 이용하면 배열안에 요소의 인덱스값을 얻을 수 있다.
만약 없는 요소값을 찾는다면 -1을 반환한다.
'배열명'.includes('찾고자하는 요소의 값')
includes를 이용하면 배열안에 요소가 있다면 true, 없다면 false를 반환한다.
2. 객체
- 객체는 키와 값으로 이루어져 있다. 즉 배열에서는 키값이 인덱스였다면 객체에서는 키값을 사용자가 정할 수 있다는 특징이 있다.
문법
let '객체명' = {A : 'a', B : 'b', C : 'c'};
값접근식
방법1: Dot notation >> '객체명'.'Key값';
방법2: Bracket notation >> '객체명'[" 'Key값' "];
객체의 값접근 방법은 위와같이 두가지 방법이 있다. 그렇다면 왜 두가지 방법으로 값접근이 가능하도록 했을까?
Bracket Notation은 key값을 변수로 지정해서 사용할 때 유용하다. 예를들어, 아래와 같은 사용법이 가능하다.
Dot Notation의 경우 변수를 담을 수 없다!
let A = 'contents';
let Obj = {contents: 'a'};
Obj[A] // a값이 반환된다.
객체 추가/삭제/수정
참조:
추가
1. Dot notation
'객체명'.'추가하고픈 키값' = '요소값';
2. Bracket notation
'객체명'[" '추가하고픈 키값' "] = '요소값';
삭제
delete '객체명'.'삭제하고픈 키값';
객체을 활용한 속성 / 메소드
- '찾고자 하는 키값' in '탐색 대상 객체'; >> 키값이 있다면 true, 없다면 false
- let '변수명' = {... '객체1', ... '객체2'}; >> 객체 합치기
- let '변수명' = Object.assign('객체1', '객체2'); >> 객체 합치기
- let '변수명' = Object.assign('객체1', '객체2'); >> 객체 합치기
- let '변수명' = Object.entries('객체'); >> 객체를 배열로 변경
- let '변수명' = Object.fromEntries('배열'); >> 배열을 객체로 변경
- '키값' in '객체' >> 객체안에 해당하는 키값이 있는지 확인하고 boolean값으로 반환