객체에서 굳이 프로퍼티 네임이 필요없거나 랭킹처럼 순서가 있는 값들의 묶음, 혹은 순서가 상관없는 묶음의 경우 배열을 사용하면 객체보다 훨씬 간단.
let greetings = [
'안녕하세요',
'Hello',
'니하오'];
배열은 0번 index 부터 시작해 요소(element)들이 나열되어있는 구조.
대괄호안에 index를 입력해서 요소 사용 가능 greetings[0] // '안녕하세요'
배열의 자료형을 typeof로 확인해보면 object라고 뜸. 배열도 하나의 객체인 것! 따라서 내장된 다양한 프로퍼티와 여러 메소드들을 사용할 수 있음!
대괄호법을 이용해 값을 수정하고 추가할 수 있음
let arr = ['1','2','3','4'];
arr[5] = '5'; // [ '1', '2', '3', '4', <1 empty item>, '5' ]
// index 4를 뛰어넘고 추가했기 때문에 index 4의 값이 empty(undefined값임)
delete arr[5]; // [ '1', '2', '3', '4', empty, empty ]
이 때 delete의 경우 자리 자체가 삭제되는 게 아니라 값만 사라져서 empty로 남아있게 됨 => delete 안쓰고 splice를 씀!
arr.length와 같이 배열의 길이를 알 수 있는 프로퍼티를 점 표기법으로 사용가능.
splice 메소드를 이용해 삭제할 수 있는데 필수 파라미터로 삭제할 시작 인덱스를 받고 옵션으로 삭제할 갯수와 대체할 값을 받음(안하면 그냥 끝까지 삭제됨)
startIndex - 삭제할 시작 인덱스
deleteCount(옵션) - 삭제할 갯수
item(옵션) - 인덱스 자리에 들어갈 값
let arr = ['1','2','3','4'];
arr.splice(2,3) // ['1', '2']
arr.splice(1) // ['1']
let arr = ['1','2','3','4','5'];
arr.splice(1, 1, '6','7') // ['1','6','7','4','5'];
arr.splice(3, 0, '8','9') // ['1','6','7','4','8','9','5'];
=> splice를 이용해서 추가, 수정, 삭제 다 가능함!!
만약 item이 arr에 없다면 -1 반환, 여러개 있다면 최초 index만 알려줌
그래서 여러개 있는 경우 마지막 index만 알려줌
배열의 요소를 반복하기 위해 for of문을 사용 (파이썬의 for in문과 비슷)
객체에서 사용하는 for in문과 다른 점은 for(프로퍼티네임 in 객체)고 for of문은 for(변수 of 배열)임