8. 배열
자바스크립트 === dynamically typed language
-> 런타임에서 타입을 동적으로 정함
-> 배열에 다양한 종류의 데이터 담기 가능(좋은 구조는 아님)
Declaration
ex. const 변수명 = new Array();
const 변수명 = [값1, 값2];
Index position
- 인덱스에 해당하는 값을 [] 안에 넣어 CRUD* 가능
* CRUD : create(생성), read(읽기), update(수정), delete(삭제)
- 배열의 크기보다 큰 값 즉 값이 설정되지 않은 값에 접근할 경우 -> undefined
Looping over an array
- for(초기값, i 조건값, 단계별 수행)
- for of(지역변수 of 배열변수명)
- forEach
ex. 배열명.forEach(function (fruit, index, array) {
배열명.forEach((fruit, index, array) => {
console.log(fruit, index, array);
=> 각 인덱스별 값, 인데스 숫자, 배열 전체 출력
});
Addition, deletion, copy
1) add
- push : 배열의 맨 뒤에 값 추가
- unshift : 배열의 맨 앞에 값 추가
2) deletion
- pop : 배열의 맨 마지막 값을 삭제(값이 return 됨)
- shift : 배열의 맨 처음 값 삭제
- slice(start 인덱스값, (삭제할 갯수), (추가할 값))
+ 원하는 인덱스만 설정한 후 삭제할 갯수를 작성하지 않을 시 start 인덱스부터 이후의 값을 모두 삭제함
++ 지워진 자리에 추가할 값이 추가됨
+ unshift와 shift는 매우 느림
배열값들의 인덱스를 이동시켜서 하기 때문에 배열의 크기가 커질수록 느림
맨 마지막에 넣는 건 빠름
Combine
- concat : 기존 배열.concat(추가할 배열)
Searching
- 배열명.indexOf(값) : 해당 값이 몇번째 인덱스에 있는지 확인 가능
+ 중복된 값이 있는 경우 가장 앞에 있는 값의 인덱스를 반환
- 배열명.includes(값) : 값이 있는지 아닌지 true, false로 나타냄
- 배열명.lastIndexOf(값) : 해당 값이 몇번째 인덱스에 있는지 확인 가능
+ 중복된 값이 있는 경우 가장 마지막에 있는 값의 인덱스를 반환
+ concat, push, pop 등 자료구조나 파이썬에서 많이 사용해본 익숙한 친구들이 많아서 언어 하나를 숙달하면 다른 언어를 공부하는 것이 어렵지 않다고 한 점이 매우 이해가 되는 것 같다.
++ 속도가 좀 붙는 것 같아서 다행이다,, 근데 너무 강의가 많아서 걱정,, 언제 다 끝내고 리액트랑 정처기하지,,