Array에 대해 알아보자.
Array 배열
자바스크립트에서 배열은 이름과 인덱스로 참조되는 정렬된 값의 집합입니다.
배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 합니다.
같은 배열에 있는 배열 요소끼리의 타입이 서로 다를 수도 있습니다.
특정 배열 요소가 비어 있을 수도 있습니다.
자바스크립트에서 배열은 Array 객체로 다뤄집니다.
생성
배열 리터럴 대괄호([ ])
가장 성능이 좋은 배열 생성 방법입니다.
1 2
let a = []; let b = [1, 2, 3];
Array 생성자 함수
인수로 length 값을 전달받아 해당 길이의 배열을 생성합니다.
1
let a = new Array(10);
Array.of()
인자의 수나 유형에 관계없이 가변 인자를 갖는 새 Array 인스턴스를 만듭니다.
Array.of()와 Array 생성자의 차이
Array.of(7)
은 하나의 요소 7을 가진 배열을 생성
Array(7)
은 length 속성이 7인 빈 배열을 생성합니다.
Array.of(element0[, element1[, …[, elementN]]])
elementN
: 배열에 추가할 요소
Array.from()
유사 배열 객체(array-like object)
나반복 가능한 객체(iterable object)
를 얕게 복사해 새로운 Array 객체를 만듭니다.Array.from(arrayLike[, mapFn[, thisArg]])
arrayLike
: 배열로 변환할 유사 배열 객체나 반복 가능한 객체mapFn
: 배열의 모든 요소에 대해 호출할 맵핑 함수thisArg
: mapFn 실행 시에 this로 사용할 값
주요 프로퍼티
Array.prototype.length
배열의 길이를 반환합니다.
주요 메서드
참고 글 : MDN_Array
데이터 삽입
새로운 항목을 자료 구조 내에 추가하는 것
Array.prototype.push(element1[, …[, elementN]])
새로운 요소를 배열의 끝에 추가하고, 배열의 새로운 길이를 반환합니다.
element N
: 추가할 요소
Array.prototype.unshift(element1[, …[, elementN]])
새로운 요소를 배열의 맨 앞쪽에 추가하고, 배열의 새로운 길이를 반환합니다.
element N
: 추가할 요소
데이터 삭제
Array.prototype.pop()
배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.
Array.prototype.shift()
배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다.
데이터 접근
인덱스를 사용해 메모리의 주소로부터 직접 값을 얻습니다.
Array[i]
Array.prototype.at(index)
인덱스 값을 받아, 배열에서 배열 요소를 반환합니다. (음수 값 사용 가능)
index
: 가져올 요소의 인덱스 값
데이터 순회
Array.prototype.reduce(accumulator[, currentValue[, currentIndex[, array]])[, initialValue])
배열의 각 요소에 대해 주어진 함수를 실행하고, 하나의 결과값을 반환합니다.
accumulator
: callback의 이전 반환값currentValue
: 처리할 현재 요소currentIndex
: 처리할 현재 요소의 인덱스 값array
: reduce()를 호출한 배열initialValue
: 첫 번째 인수에 제공하는 값 (defalut는 배열의 첫 번째 요소)
1 2 3
[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => { return accumulator + currentValue; }); // 10
Array.prototype.map(callbackFn, thisArg)
배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
Array.prototype.every(callbackFn, thisArg)
배열 안의
모든 요소가 주어진 판별 함수를 통과하는지 테스트
합니다.결과에 따라 boolean 값을 반환합니다.
Array.prototype.some(callbackFn, thisArg)
배열 안의 요소 중
적어도 하나라도 주어진 판별 함수를 통과하는지 테스트
합니다.결과에 따라 boolean 값을 반환합니다.
Array.prototype.filter(callbackFn, thisArg)
주어진 판별 함수를
통과하는 모든 요소를 모아 새로운 배열로 반환
합니다.
그 외
Array.prototype.splice(start, deleteCount, item1, …, itemN)
배열의 기존 요소를 삭제 또는 변경하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
제거한 요소를 담은 배열을 반환합니다.
start
: 배열의 변경을 시작할 인덱스deleteCount
: 배열에서 제거할 요소의 수itemN
: 배열에 추가할 요소
Array.prototype.slice(begin, end)
배열의
begin부터 end전까지
에 대한얕은 복사
본을 새로운 배열 객체로 반환합니다.원본 배열은 바뀌지 않습니다.
begin
: 0을 시작으로 하는 추출 시작점에 대한 인덱스end
: 추출을 종료 할 기준 인덱스 (end는 미포함)
Array.prototype.concat(value1, …, valueN)
인자로 주어진 배열이나 값들을 기존 배열의 맨 뒤에 합쳐서 새 배열을 반환합니다.
valueN
: 새 배열로 연결할 배열 및/또는 값
Array.prototype.join(separator)
배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.
separator
: 배열의 각 요소를 구분할 문자열
Array.prototype.reverse()
배열의 순서를 반전합니다.
Array.prototype.sort(compareFunction)
배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다.
기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
compareFunction
: 정렬 순서를 정의하는 함수
compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 정렬합니다.
반복문으로 배열 접근
for (변수;조건;수정) , while
for (let x of Array)
배열의 값을 x에 하나씩 호출합니다.
forEach(callback(element, index, array)[, thisArg])
주어진 콜백함수를 배열 요소 각각에 대해 실행합니다.
for문과 다르게 break, continue를 사용할 수 없습니다.
element
: 처리할 현재 요소index
: 현재 요소의 인덱스array
: 호출한 배열thisArg
: callback에서 this로 사용할 값