5일차에는 계산기를 구현해보는 실습을 했습니다.
오늘은 배열에 대한 기초를 배웠습니다.
배열은 여태까지 배운 num, string 등의 원시 타입 데이터와는 다른 참조 타입(reference type) 데이터라고 합니다. 아마 C에서 포인터로 접근하는 것과 같은 방식을 쓰기 때문인것 같네요. 그러고보면 string도 원시타입으로 취급되는데 string을 어떤식으로 다루는걸까요? 한 번 찾아봐야겠습니다.
우선 선언은 마찬가지로 let 등을 이용해서 선언하고, 할당은 [a,b,c] 같은 식으로 합니다. 배열의 원소에 대한 접근은 0부터 시작해서 arr[i] 로 접근합니다. 기본적인 메소드는
arr.push(elem): arr의 가장 뒷 부분에 elem을 삽입하고 현재 arr의 length를 되돌려줍니다.
arr.pop() : arr의 가장 뒷 부분의 elem을 되돌려주고 삭제합니다.
arr.shift() : arr의 가장 앞 부분의 elem을 삭제하며 뒤의 모든 원소들을 하나씩 앞당깁니다. 이후 삭제했던 elem을 되돌려줍니다.
arr.unshift(elem) : arr의 모든 원소들을 하나씩 뒤로 밀고 가장 앞 부분에 elem을 삽입한 후 arr의 length를 되돌려줍니다.
arr.includes(elem) : arr에 elem이 있으면 true를, 없으면 false를 되돌려줍니다. ie에서는 사용이 불가능하니 아래의 indexOf를 사용하는 것이 좋습니다.
arr.indexOf(elem) : arr에서 elem에 해당하는 원소의 첫 번째 index를 되돌려줍니다. elem이 없으면 -1을 되돌려줍니다.
arr.slice(a,b) : string에서의 slice와 같은 작용을 합니다. a번째 부터 b-1번째까지 포함하는 부분배열을 새로 만들어 되돌려줍니다. 음수는 뒤에서부터 세서 (ex: -1은 맨 뒷 원소, -2는 뒤에서 두 번째 원소)로 바꿔서 계산합니다. a>b인 경우 빈 배열을 되돌려줍니다.
arr1.concat(arr2) : arr1 뒤에 arr2를 이어 붙인 새로운 배열을 만들어 되돌려줍니다.
Array.isArray(obj) : obj가 array이면 true, 아니면 false를 되돌려줍니다.