배열(Array) : 순서에 대한 정보(index)를 가지고 있는 참조형 데이터 타입이자 순서(index)가 있는 값(element)으로 대괄호([])를 이용해서 만든다.
메서드(Method) : 객체 지향 프로그래밍에서 객체와 관련된 서브 루틴(함수)이며 데이터와 멤버 변수에 대한 접근 권한을 갖는다.
let fruits = ['banana', 'apple', 'pineapple'];
fruits[2]; // "pineapple"
fruits[3]; // undefined
let myNum = [ // 2차원 배열
[13, 30],
[73, 8],
[44, 17],
];
myNum[1][0]; // 73
length
를 이용한다.let myNum = [23, 4, 51, 87];
myNum.lenght; // 4
let myNum = [23, 4, 51, 87];
for(let n = 0; n < myNum.length; n++) {
console.log(myNum[n]);
}
Array.isArray()
: 배열인지 아닌지 판별하는 메서드 (배열은 typeof로 검사했을 때 object라고 나옴)
배열 요소 추가 및 삭제 : pop()
, push()
, shift()
, unshift()
myNum.pop(); // 배열 마지막 요소 삭제
myNum.push(); // 배열 마지막에 요소 추가
myNum.shift(); // 배열 첫번째 요소 삭제
myNum.unshift(); // 배열 첫번째 요소 추가
// 원본 배열을 변경한다 (mutable)
indexOf
, includes
let words = ['a', 'b', 'c'];
words.indexOf('b'); // 1
words.indexOf('d'); // -1, 배열에 없는 단어
words.indexOf('c') !== -1 // true
words.includes('a') // true
indexOf는 해당하는 요소의 index까지 알아낼 수 있고 모든 브라우저에서 지원하지만, includes는 IE에서 지원되지 않음.
(indexOf가 호환성, 범용성 측면에서 더 좋다!)
객체는 게임 캐릭터에 비유할 수 있다!
ID와 직업을 가진다는 틀은 같지만, ID와 직업의 세부 내용은 각각 다른 것 처럼.
// 각 변수는 서로에 대한 관계성이 없음
let userName = 'hazel';
let userClass = 'Sorceress';
let user2Name = 'nut';
let user2Class = 'Warrior';
// 각 값이 하나의 배열로 묶여있긴 하지만, index가 어떤 정보를 갖고 있는지 미리 알아야하며, 가독성도 떨어짐
let user = [
'hazel',
'Sorceress'
];
let user2 = [
'nut',
'Warrior'
];
// 객체
let user = {
userName: 'hazel',
userClass: 'Sorceress'
};
user.userName; // 'hazel'
user['userName']; // 'hazel'
let userName = 'kim'
user[userName] === user['userName']; // false, 따옴표가 없어서 userName은 변수로 취급된다.
user['userName'] === user['kim']; // true
delete
, in
user['level'] = '60'; // 기존에 없는 key로 속성 추가
delete user.level; // key값으로 속성 제거
'level' in user; // false
console.table(arr)
: 테이블로 배열 출력debuggger; [함수_호출부]
: 개발자 도구에서 F9를 눌러서 디버깅 가능 (종료는 F8)// 입력값 : 문자열 ex) 'apple'
// 출력값 : 각 문자를 키로 갖는 객체 {a: 1, p: 2, l: 1, e: 1}