자바스크립트 배열

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])


  1. callback: 3개의 인수를 취하여 배열의 각 값에 대해 실행할 함수(element, index, arry)
    • element: 배열에서 현재 처리중인 요소
    • index: 배열에서 처리중인 현재 요소의 인덱스
    • array: findIndex 함수가 호출된 배열
  2. 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])
  1. callback 매개변수
    • accumulator: 콜백의 누적 반환값 또는 initialValue가 주어진 경우 initialValue
    • currentValue: 배열 내 현재 처리되고 있는 요소
    • currentIndex: 배열 내 현재 처리되고 있는 인덱스
    • array: reduce가 함수가 호출된 배열
  2. initialValue: callback의 첫 호출에 첫번째 인수로 사용하는 값


  • 만약 initialValue가 주어진 경우, accumulator는 initialValue와 같고 currentValue는 배열의 첫번째 값이 됨
  • 만약 initialValue가 주어지지 않은 경우, accumulator는 배열의 첫번째 값과 같고 currentValue는 두번째와 같다.
  • reduce 예제1
  • reduce 예제2
  • reduce 예제3(map 예제와 비교해서 보기)


16. join

  • 문자열 병합
  • 배열의 문자열을 구분자를 사용하여 합침

전체 예제는 ch8.배열 참고.