본문 바로가기
Javascript

<Javascript>Array메소드

by mickey7 2023. 3. 25.
Array.prototype.reduce()
arr.reduce(callback[, initialValue])

reduce()는 빈 요소를 제외하고 배열 내에 존재하는 각 요소에 대해 callback 함수를 한 번씩 실행하는데, 콜백 함수는 다음의 네 인수를 받습니다:

  • accumulator = 누적값
  • currentValue = 순회할 때 현재 배열 값
  • currentIndex 

콜백의 최초 호출 때 accumulator와 currentValue는 다음 두 가지 값 중 하나를 가질 수 있습니다. 만약 reduce() 함수 호출에서 initialValue를 제공한 경우, accumulator는 initialValue와 같고 currentValue는 배열의 첫 번째 값과 같습니다. initialValue를 제공하지 않았다면, accumulator는 배열의 첫 번째 값과 같고 currentValue는 두 번째와 같습니다.

요약 : initialValue O  -> accumulator = initialValue , currentValue = arr[0]

          initialValue X -> accumulator = arr[0], currentValue = arr[1]

 

참고: initialValue를 제공하지 않으면, reduce()는 인덱스 1부터 시작해 콜백 함수를 실행하고 첫 번째 인덱스는 건너 뜁니다. initialValue를 제공하면 인덱스 0에서 시작합니다.

 

화살표 함수로 활용 예시

arr.reduce( (acc, curr) => acc + curr );

 

Array.prototype.forEach()

 

Array.prototype.sort()
arr.sort([compareFunction])
  • 숫자배열, 문자배열 모두 가능 (문자 배열은 아스키코드 기준으로!)

매개변수

compareFunction Optional

정렬 순서를 정의하는 함수. 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬됩니다.

반환 값

정렬한 배열. 원 배열이 정렬되는 것에 유의하세요. 복사본이 만들어지는 것이 아닙니다.

    arr.sort(function(a,b){
        if(a<b){
            return 1;
        }
        else{
            return -1;
        }

(문자로 이루어진 배열에서 내림차순)

  • compareFunction(a, b)이 0보다 작은 경우 a를 b보다 낮은 색인으로 정렬합니다. 즉, a가 먼저옵니다.
    • 위의 코드에서 a>b가 -1이 나오면(else 부분에 해당) 0보다 작은 경우이기 때문에 큰 값이 작은 값보다 먼저 오게 됩니다.
  • compareFunction(a, b)이 0을 반환하면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬합니다. 참고 : ECMAscript 표준은 이러한 동작을 보장하지 않으므로 모든 브라우저(예 : Mozilla 버전은 적어도 2003 년 이후 버전 임)가 이를 존중하지는 않습니다.
  • compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다.
    • 위의 코드에서 a<b가 1이 나오면 0보다 큰 경우이기 때문에 큰 값이 작은 값보다 먼저 오게 됩니다.