2022. 12. 16. 09:08ㆍjs
27.1 배열이란.
배열은 여러개의 값을 순차적으로 나열한 자료구조다
배열은 사용 빈도가 매우 높은 가장 기본적인 자료구조다.
배열은 배열의 길이를 나타내는 length 프로퍼티를 갖는다.
for문을 통해 순차적으로 요소에 접근 할 수 있다.
자바스크립트에 배열이란 타입은 존재하지 않는다. 객체 타입으로 존재한다 .
27.2 자바스크립트 배열은 배열이 아니다.
자료구조에서 말하는 배열은 동일한 크기의 메모리공간이 “연속적으로” 나열된 자료 구조를 말한다.
배열의 요소는 하나의 데이터 타입으로 통일되어 있으며, 서로 연속적으로 인접해 있다.
이러한 배열을 밀집 배열 이라고 함.
정렬되지 않은 배열에서 특정 원소를 검색하는 경우 O(n)이 된다.
삽입 또는 삭제 하는 경우 연속적으로 유지하기 위해 요소의 이동이 필요하다.
자바스크립트에서 사용하는 배열은 연속적으로 이어져 있지 않을 수 있으며,
동일한 크기를 갖지 않아도 된다. 이와 같은 배열을 희소 배열이라고 한다.
자바스크립트의 배열은 일반 배열을 흉내낸 특수한 객체다.
27.3 length 프로퍼티와 희소 배열
Length 프로퍼티는 요소의 개수 배열의 길이를 나타내는 값으로 0이상의 정수값을 가진다.
배열의 맥스값은 2^32 - 1 미만의 양의 정수 이다 .
배열은 값없이 비어있는 요소를 위해 메모리 공간을 확보 하지 않으며, 빈 요소 또한 생성하지 않는다.
하지만 빈 값이 존재하더라도 length 는 늘어난다는것을 알아두자.
배열에는 같은 타입의 요소를 연속적으로 위치시키는것이 최선이다 .
27.4 배열 생성
27.41 배열 리터럴
배열 리터럴은 0개이상의 요소를 쉼표로 구분하여 대괄호로 묶는다. 배열 리터럴은 객체 리터럴과 달리
프로퍼티 키가 없고 값만 존재한다.
배열 리터럴에 요소를 추가하지 않으면 기본적으로 0을 가진다.
27.42 Array 생성자 함수
Object 생성자 함수를 통해 객체를 생성 할 수 있듯 Array를 통해 생성할 수 있다.
전달된 인수의 개수 만큼 length를 할당 해줌.
27.42 Array.of
ES6 에서 도입된 Array.of메서드는 전달된 요소를 갖는 배열을 생성한다. 인수가 한개 이고 숫자더라도
length가 아니라 값으로 갖는 배열을 생성한다.
27.43 Array.from
유사 배열 객체, 또는 이터러블 객체를 인수로 받아 배열로 변환하여 전달
27.5 배열 요소의 참조
배열의 요소를 참조할때는 []를 이용하여 인덱스를 사용하여 이용한다.
크기를 넘어가거나 없는 값을 참조할 경우 undefined를 반환한다
27.6 배열 요소의 추가와 갱신
객체에 프로퍼티를 동적으로 추가할 수 있는것처럼 배열에도 요소를 동적으로 추가할 수 있다.
27.7 배열요소의 삭제
delete 연산자를 이용하여 요소의 참조를 이용해서 제거
이때 length가 줄어들지 않음으로 희소배열을 만들게 된다 따라서 제거를 하고 싶다면
Splice메서드를 사용해라 .
27.8 배열 메서드
배열에는 원본 배열을 직접 변경하는 메서드,
그리고 원본을 변경하지 않고 새로운 배열은 만들어 반환하는 메서드가
있다.
.push() 의 경우 전자
.concat() 의 경우 후자로 동작한다.
27.8.1 array.isArray
어레이 인지 확인 해주는 메서드
27.8.2 Array.prototype.indexOf
전달된 요소를 검색하여 인덱스를 반환한다.
indexOf대신 includes를 사용해서 하는것이 가독성에 더욱 도움된다.
27.8,.3 Array.prototype.push
마지막 요소로 추가하고 변경된 length를 반환한다.
원본 배열을 직접 변경한다.
push대신 […]와 같은 방식으로 사용하라ㅏ고 한다
27.8.4 Array.prototype.pop
pop메서드는 원본 배열에서 마지막 요소를 제거 하고 제거한 요소를 반환이또한
직접 변경하게 된다.
27.8.5 Array.prototype.unshift
unshift메서드는 인수로 전달받은 모든 값을 원본 배열의 선두에 요소로 추가하고 변경된 length프로퍼티 값을 반환한다.
이또한 스프레드 문법을 사용하자.
27.8.6 Array.prototype.shift
shift메서드는 원본 배열에서 첫번째 요소를 제거하고 제거한 요소를 반환한다.
27.8.7 Array.prototype.concat
위에서 언급한 부분으로 넘어간다.
27.8.8 Array.prototype.splice
직접 변경 메서드 이며 처음이나 마지막에 요소를 추가하거나 제거 한다.
27.8.9 Array.prototype.slice
slie메서드는 인수로 전달된 범위의 요소들을 복사하여 배열로 반환한다.
원본 배열 건드리지 않는다
27.8.10 Array.prototype.join
문자열로 변환하여 구분자로 연결해 반환 기본구분자는 ,
27.8.11 Array.prototype.reverse
뒤집어서 반환
27.8.12 Array.prototype.fill
요소로 배열 length까지 채워준다.
27.8.13 Array.prototype.includes
요소가 있는지 없는지 확인하여 반환
27.8.14 Array.flat
다차원 으로 되어 있는 경우 -1차원으로 변경해준다. Infinity를 인수로 보내면
1차원 배열로 변환해준다.
27.9 배열 고차 함수
고차함수는 외부 상태의 변경이나 가변 데이터를 피하고 불변성을 지향하는 함수형 프로그래밍에
기반을 두고 있다. 조건문과 반복문을 제거하여 변수 사용을 억제
순수 함수를 통해 부수효과를 최대한 억제 하여 오류를 피하는 노력
Sort,
이전까지는 quicksort -> timsort 로 변경됨.
Map
특정 동작을 반복해서 새로운 배열을 반환
Filter
특정 요소를 제거해서 새로운 배열을 반환
Reduce
하나의 결과값을 만들어 반환
Array.prototype.some
요소를 순회 하면서 인수로 전달된 콜백함수를 호출 한다 .
한번이라도 참이면 true, 아니면 else를 반환한다.
Array.prototype.every
모든 반환값이 참이면 true, 아니면 false 를 반환한다.
빈배열시 언제나 true를 반환한다.
Array.prototype.findIndex
콜백함수를 호출하여 반환값이 true인 첫번째 요소의 인덱스를 반환한다.
Array.prototype.flatMap
Map 메서드를통해 생성된 새로운 배열을 평탄화 하여 반환한다.
사실 이번장에서 중점적으로 봐야 할 부분이 있기 보다는 사용하면서 체득해야 하는 부분이 큰 장이라고
느꼇다. 사용하면서 필요한 부분은 다시 보면서 공부해야 할 듯 하다.
'js' 카테고리의 다른 글
es6 함수의 추가기능. (0) | 2022.12.19 |
---|---|
Number (0) | 2022.12.19 |
http 공부중. (0) | 2022.12.07 |
클래스 나머지 정리. (0) | 2022.12.05 |
클래스 part1 (0) | 2022.11.27 |