배열, 객체
✍️ Today I Learned
1. 배열
-
배열은 순서가 있는 값이다. 순서는 인덱스(index)라고 부르며, 1이 아닌 0부터 매긴다.
- 배열의 값 접근은 인덱스를 이용하여 값에 접근한다.
-
[]
대괄호를 이용해서 배열을 만드며, 각각의 원소(element)는 쉼표(comma)로 구분해준다.let myNumber = [73, 98, 86, 61, 96]; myNumber[3]; // 61 myNumber[4] = 200; // 배열의 4번째 인덱스의 값을 200으로 변경 myNumber; // [73, 98, 86, 61, 200];
-
배열의 속성에 접근하거나 메소드를 추가할때는
.
(온점)을 이용하여 접근한다.-
myNumber.length; // 4
: 온점(dot)을 이용해서 변수가 가지고 있는 속성(property)에 접근할 수 있다. -
myNumber.push(98); // myNumber 배열 끝에 96이라는 값을 추가한다
: 온점(dot)을 이용해서 관련된 명령(method)도 실행할 수 있다. 명령을 실행할 때는, 함수를 실행하듯 괄호를 열고 닫는 형태로 실행한다.
-
1-1. 배열의 기초 메소드
-
Array.isArray : 배열의 기본 type은 “object”이다. 그래서 특정 값이 배열인지 아닌지
typeof()
로 판별할 수 없다.Array.isArray()
는 배열인지 아닌지 판별할 수 있는 메소드이다. 반환값은boolean
이다.let num = 10; let words = ['피', '땀', '눈물']; typeof num; // "number" typeof words; // "object" Array.isArray(num); // false Array.isArray(words); // true
-
push, pop : 배열의 뒤에서 요소를 추가 및 삭제할 수 있다. (mutable)
let words = ['피', '땀', '눈물']; words.push('BTS'); // 4 (기본 리턴 값은 '.length') words; // (4) , ['피', '땀', '눈물', 'BTS') , 원본 값이 바뀐다(mutable). words.pop(); // 'BTS' (기본 리턴 값은 삭제된 값이 리턴된다.) words; // (3) ["피", "땀", "눈물"]
-
shift, unshift : 배열의 앞에서 요소를 추가 및 삭제할 수 있다. (mutable)
2. 객체
-
객체란 키(key)와 값(value)으로 구성된 프로퍼티(property)의 정렬되지 않은 집합이다.
- 중괄호를 이용하여 객체를 만드며 그 내부에 키와 값은 쌍으로 구성되며 (key-value paor), 키-값 쌍은 쉼표(comma)로 구분해준다.
2-1. 객체의 사용
-
객체의 값을 사용하는 방법은 두 가지가 있다.
let user = { firstName: 'JeongHyun', lastName: 'Kim', email: 'kk_ong2233@naver.com', city: 'Seoul', };
-
Dot notation : 객체명 뒤에
.
을 통하여 key값에 접근한다.user.firstName; // 'JeongHyun' user.city; // 'Seoul'
-
Bracket notation : 객체명 뒤에
[]
대괄호 안 값이 문자열처럼''
안에 들어가야한다.user['firstName']; // 'JeongHyun' user['city']; // 'Seoul'
-
키 값이 동적일 경우에는 브라켓 노테이션을 반드시 사용한다.
let person = { name: 'Kim', age: 20, }; function getProperty(obj, propertyName) { return obj[propertyName]; } let output = getProperty(person, 'name'); // 'Kim' let output = getProperty(person, 'age'); // '20'
2-2 객체의 추가/삭제 및 확인
-
dot/bracket notation을 이용해 값을 추가할 수 있다.
user.age = '20'; // user 객체에 age = '20' 의 키값쌍 추가 user['city'] = 'Seoul';
-
delete 키워드를 이용해 삭제가 가능하다.
delete user.age; // user 객체에 있는 age 키 제거
-
in 연산자를 이용해 해당하는 키가 있는지 확인할 수 있다.
'age' in user; // false 'city' in user; // true
🤔 Understanding
-
배열은 문자열과 유사하다. 문자열은 원본을 수정하지 않았기에 문자열을 복사해서 가져온뒤 작업을 많이하였다.
하지만 배열에서는 원본을 바꾸는지 여부가 중요하다 (mutable 여부). 무분별한 원본값을 바꾸는 행위는 예상치 못한 버그(?)를 야기시킬수 있기에 잘 생각한 뒤 사용해야 할것같다.