배열 특징
1. 배열의 타입
const cafe = ['coffee', 'cake', 'tea', 'cookie']
typeof cafe
typeof(cafe)
// expected output: 'object'
2. 프로퍼티 dir
- 프로퍼티와 매소드 값을 알 수 있다.
- 프로퍼티: 단순 속성값 출력
- 매소드: 배열에 속한 기능 단위 출력
const cafe = [ 'coffee', 'cake' ]
console.dir(cafe)
3. length 프로퍼티
- 요소의 갯수를 알려줌
- 희소 배열 (요소 앞, 뒤, 중간이 비어 있는 배열) 만들기 가능
📌 메소드
-
자료형에 포함된 함수
-
빌트인 메소드
-
원본 배열을 수정하는 메소드와 아닌 메소드 구분 중요
--> 파괴적 처리 vs 비파괴적 처리
-
Array.메소드
: Array.메소드 형태로 사용, 여기서 ‘Array’는 문자 그대로 Array
-
Array.prototype.메소드
: 배열.메소드 형태로 사용, 여기서 ‘배열’은 정의된 배열, 예를 들어 [1, 2, 3].pop();
1. unshift: 맨 앞 요소 추가 ⭐
2. shift: 맨 앞 요소 삭제 ⭐
- 삭제될 요소 반환 가능
- 요소가 없거나 length가 0이면 undefined
3. pop() : 맨 뒤 삭제 ⭐
4. push(): 맨 뒤 추가 ⭐
5. reverse()
7. indexOf(): 요소의 인덱스 찾기
- 없는 요소를 찾으면 -1
- indexOf(탐색하고자 하는 요소 ,찾는 시작 위치)
8. isArray(): 배열인지 확인
9. join(): 요소를 하나로 연결
- String으로 받겠다는 의미
- 전화번호에 많이 사용
10. fill(요소, 채우기 시작점,끝 인덱스): 똑같은 요소로 채우기 ⭐
10-1. String.repeat(반복할 수)
- Array(숫자) --> 지정 숫자 개수만큼 빈 요소를 갖는 배열을 만든다.
10-2. split(): String 쪼개기
참고) https://hianna.tistory.com/377
10-3. Array.from(): 유사배열객체 만들기
- 완전한 배열로서 성격을 갖도록 해준다.
- Array.isArray(); 속성으로 확인한 결과 true값으로 반환함
Array.from('hello world');
//expected output: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
Array.from([1, 2, 3], x => x ** 2);
//expected output: [1, 4, 9]
Array.from([{'value':100}, {'value':200}, {'value':300}], x => x.value);
//expected output: [100, 200, 300]
11. flat(): 배열 평탄화
- 안 쪽부터 배열 풀기
- infinity: 한 번에 평탄화
12. include: 배열에 요소의 유무 확인
- include(찾는 값, 탐색을 시작하고자 하는 인덱스)
- true. false로 반환
13. find ⭐⭐⭐
- find는 조건에 맞는, 하나만 찾는 경우!!
- ex) 사용자 ID/PW 찾기에 사용
- 부하가 생기지 않음, 가장 좋은 이점
14. findIndex
- 조건에 부합하는 배열의 맨 첫 번째 요소의 인덱스 반환
- 첫번째 요소만 반환
- length는 1부터 시작임
15. map ⭐⭐⭐
- map은 데이터를 추출하기 위한 것, 원본을 건들이지 않음!
- 열 내에 있는 요소에 오름차순으로 접근해서 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환
- 기존의 값을 재정의할 수도 있지만 새로운 형태의 값을 정의하는 것 또한 가능
-객체나 json 형태의 데이터를 탐색하는 용도로 사용할 수 있기도 하며 이 과정에서 새로운 형태의 값을 정의하는 경우가 많음
--> find, filter, forEach에서도 가능
✔ 구조분해할당
- 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식
✔ 전개구문
16. forEach: 각각의 요소를 실행
- Array.prototype.map()은 새로운 배열을 생성하는 반면 Array.prototype.forEach()는 순회만
✔ 태태라는 배열을 만들고, 값을 push
17. reduce: 각 요소 누적하기
- Array.prototype.reduce(현재값, 누적값, index, array)
- 보통 index와 array를 생략
19. filter ⭐⭐⭐
20. concat:
📌 중요!!!
사용하지 않으면 ( _ )으로 사용
📌 배열 가능, 객체 불가능
📌 배열 새로 가능해진 문법
연산
📌 할당연산(우선순위가 매우 낮다)
y++; //10 1씩 증가하지만, 바로 반영 X, 한 번 더 y를 콘솔에 쳐야 반영
x--; //4 1씩 감소하지만, 바로 반영 X, 한 번 더 x를 콘솔에 쳐야 반영
--x; //3 1씩 감소
++x; //4 1씩 증가
📌 논리연산자
✔ true: 1, false: 0
✔ true: 1, false: -1
- (||)or은 덧셈이라서 하나만 true면 모두 true
- 3의 배수와 5의 배수 모두 결과 출력
- (&&)and는 곱셈! 하나만 false여도 모두 false가 됨.
- 값이 나오기 위해 true가 되려면 15의 배수(최소공배수)가