자바스크립트 배열
2018-02-12
1. 배열
- 모든 배열에는 요소가 몇 개 있는지 나타내는 length 프로퍼티가 있다.
- 한 배열의 요소가 모두 같은 타입일 필요가 없으며, 다른 배열이나 객체도 포함할 수 있다.
- Array 생성자를 사용하여 배열을 만들 수도 있지만 거의 사용하지 않는다.
2. push와 pop
- push와 pop은 각각 배열의 끝에 요소를 추가하거나 제거한다
- shift와 unshift는 각각 배열의 앞에 요소를 제거하거나 추가한다
- push와 unshift는 새 요소를 추가해서 늘어난 길이를 반환, pop과 shift는 제거된 요소를 반환한다.
- push, pop 예제
3. slice
- 배열의 일부를 가져올 때 사용. 배열 자체는 변경되지 않음
- 첫번째 매개변수는 어디서부터 가져올지, 두번째 매개변수는 어디까지 가져올지(바로 앞 인덱스까지 가져옴) 지정함
- 두번째 매개변수를 생략하면 마지막까지 반환한다
- 음수 인덱스를 쓰면 배열의 끝에서부터 요소를 반환한다
- slice 예제
4. splice
- 첫번째 매개변수는 수정을 시작할 인덱스, 두번째 매개변수는 제거할 요소 숫자(아무 요소도 제거하지 않을 때는 0), 나머지 매개변수는 배열에 추가될 요소
- splice 예제
5. copyWithin
- 요소 교체
arr.copyWithin(target)
arr.copyWithin(target, start)
arr.copyWithin(target, start, end)
["alpha", "bravo", "charlie", "delta"].copyWithin(2, 0);
// results in ["alpha", "bravo", "alpha", "bravo"]
- ES6에서 도입한 새 메서드
- 배열의 일부를 복사해서 일한 배열의 다른 위치에 덮어쓰기 한 다음, 기존의 요소를 덮어 쓴다.
- 배열의 길이를 넘어선 값들은 배열의 길이에 맞게 잘린다.
- 음수 인덱스를 사용하면 배열의 끝에서부터 센다
- copyWithin 예제
6. fill
- ES6에서 도입
- 정해진 값으로 배열을 채움
arr.fill(value[, start = 0[, end = this.length]])
// value: 배열을 채우기 위한 값
// start(옵션): 시작 인덱스, 기본 값은 0
// end(옵션): 끝 인덱스, 기본 값은 배열의 길이
7. reverse
배열 요소의 순서를 반대로 바꿈
8. sort
- 배열의 요소를 적절한 위치에 정렬하고 배열을 반환
// 형식
arr.sort()
arr.sort(compareFunction) // compareFunction: 정렬순서를 정의하는 함수
8-1. comapreFunction(a,b)
- 음수, 양수, 0 중의 값을 반환한다.
- sort는 정렬함수를 받을 수 있으며, 일반적으로는 객체가 들어있는 배열을 정렬할 수 없지만, 정렬 함수를 사용하면 가능하다.
- compareFnuction이 제공되지 않으면 요소를 문자열로 변환하고 유니 코드 순서로 문자열을 비교하여 정렬한다.
"Banana" < "Cherry"
"80" < "9"
9. indexOf
- 배열 검색. 찾고자 하는 것과 정확히 일치(===)하는 첫 번째 요소의 인덱스를 반환
- lastIndexOf는 배열의 끝에서부터 검색
- 배열의 일부부만 검색하려면 시작 인덱스를 지정할 수 있다
- 일치하는 것을 찾지 못하면 -1을 반환.
- indexof 예제
10. findIndex
arr.findIndex(callback, [, thisArg])
- callback: 3개의 인수를 취하여 배열의 각 값에 대해 실행할 함수(element, index, arry)
- element: 배열에서 현재 처리중인 요소
- index: 배열에서 처리중인 현재 요소의 인덱스
- array: findIndex 함수가 호출된 배열
- thisArg: 선택사항. 콜백을 실행할 때 this로 사용할 객체. 이를 이용해서 함수가 객체의 메서드인 것처럼 호출할 수 있다.
- indexOf와 비슷하지만 콜백 함수를 써서 검색 조건을 지정할 수 있다.
- findIndex는 조건에 맞는 요소의 인덱스를 찾을 때는 적당하지만, 조건에 맞는 요소의 인덱스가 아니라 요소 자체를 원할 때는 find를 사용한다.
- findIndex 예제1
- findIndex 예제2
- findIndex 예제3
11. some, every
12. map
- 요소를 일괄적으로 변경하는데 효과적
- callback 함수의 리턴을 모아서 새로운 배열을 만드는 것이 목적이다
- 사본을 반환하며 원래 배열은 바뀌지 않는다.
- map 예제1
- map 예제2
- map 예제3
- map 예제4
13. filter
- 배열에서 필요한 것만 남김
- map과 마찬가지로 사본을 반환하며 새 배열에는 필요한 요소만 남긴다
- filter 예제1
- filter 예제2
14. find
- 해당 배열 안의 값을 하나 반환함.
- 콜백으로 전달받은 함수가 요구하는 조건을 만족하는 값을 반환
- find 예제
15. reduce
- map, filter, find로 구현할 수 있는 기능이라면 reduce로도 구현할 수 있다.
arr.reduce(callback [, initialValue])
- callback 매개변수
- accumulator: 콜백의 누적 반환값 또는 initialValue가 주어진 경우 initialValue
- currentValue: 배열 내 현재 처리되고 있는 요소
- currentIndex: 배열 내 현재 처리되고 있는 인덱스
- array: reduce가 함수가 호출된 배열
- initialValue: callback의 첫 호출에 첫번째 인수로 사용하는 값
- 만약 initialValue가 주어진 경우, accumulator는 initialValue와 같고 currentValue는 배열의 첫번째 값이 됨
- 만약 initialValue가 주어지지 않은 경우, accumulator는 배열의 첫번째 값과 같고 currentValue는 두번째와 같다.
- reduce 예제1
- reduce 예제2
- reduce 예제3(map 예제와 비교해서 보기)
16. join
- 문자열 병합
- 배열의 문자열을 구분자를 사용하여 합침
전체 예제는 ch8.배열 참고.