array_reduce 함수 설명
array_reduce
함수는 배열의 모든 요소를 하나씩 처리하여 단일 값을 얻는 데 사용됩니다. 이 함수는 각 배열 요소에 대해 실행되는 콜백 메서드를 필요로 합니다. 콜백 함수는 값을 반환해야 하며, 이 값은 다음 요소의 콜백에 전달됩니다.
콜백 함수 구문
function(previous, current, index);
매개변수 설명
매개변수 | 유형 | 설명 |
---|---|---|
previous | Any | 이전 반복에서 반환된 값 |
current | Any | 현재 반복의 요소 값 |
index | Real | 현재 반복의 인덱스 |
첫 번째로 이 콜백 함수가 호출될 때, previous
매개변수는 첫 번째 배열 요소의 값으로 설정되며, 배열 범위의 첫 번째 반복은 건너뜁니다. 즉, 콜백은 주어진 범위의 두 번째 요소부터 시작합니다.
init
매개변수를 제공하면 첫 번째 반복이 건너뛰지 않으며, 첫 번째 요소의 콜백에 대한 previous
매개변수는 제공한 init
값으로 설정됩니다.
콜백 함수가 값을 반환하면, 이 값은 다음 반복으로 전달됩니다. 이 과정은 주어진 배열(또는 제공된 범위)이 완전히 반복될 때까지 반복됩니다. 함수는 마지막 요소의 콜백에서 얻은 값을 반환합니다.
특별한 경우 처리
조건 | 결과 |
---|---|
배열에 요소가 하나만 있고 초기 값이 없음 | 함수는 첫 번째 배열 요소를 반환합니다. |
배열이 비어 있고 초기 값이 제공됨 | 함수는 해당 초기 값을 반환합니다. |
초기 값이 제공되지 않음 | 함수는 오류를 발생시킵니다. |
구문
array_reduce(array, function, [init], [offset], [length]);
매개변수 설명
매개변수 | 유형 | 설명 |
---|---|---|
array | Array | 사용할 배열 |
function | Function | 각 요소에 사용할 함수 |
init | Any | 첫 번째 전달 값으로 사용할 초기 값. 제공되지 않으면 array[offset] 로 기본값이 설정되고 첫 번째 반복이 건너뜁니다. |
offset | Real | 배열의 시작 인덱스. 음수 값을 설정하면 배열의 끝에서부터 계산됩니다. |
length | Real | 탐색할 요소의 수. 음수 값은 배열을 거꾸로 탐색합니다. |
예제
다음은 배열에서 가장 작은 값을 찾는 예제입니다.
var _array = [2, 1, 3, 4, 5];
var _min_value = function(_previous, _current, _index){
return min(_previous, _current);
};
var _value = array_reduce(_array, _min_value);
위의 코드는 배열에서 가장 작은 값을 찾으려고 합니다. 먼저 임시 배열 _array
를 생성하고 숫자 집합으로 채웁니다. 그런 다음, 이전 값과 현재 값 중 더 작은 값을 반환하는 새로운 함수 _min_value
를 생성합니다. 마지막으로, array_reduce
를 호출하여 배열을 처리하고 _min_value
를 콜백 함수로 사용하여 최종 결과를 임시 변수 _value
에 저장합니다. 이 변수는 배열에서 가장 작은 값인 1을 포함하게 됩니다.
활용 예제
- 배열의 합계 계산하기
var _array = [1, 2, 3, 4, 5];
var _sum = function(_previous, _current){
return _previous + _current;
};
var total = array_reduce(_array, _sum);
- 배열의 곱 계산하기
var _array = [1, 2, 3, 4];
var _product = function(_previous, _current){
return _previous * _current;
};
var total_product = array_reduce(_array, _product);
- 배열의 최대값 찾기
var _array = [5, 3, 9, 1];
var _max_value = function(_previous, _current){
return max(_previous, _current);
};
var max_value = array_reduce(_array, _max_value);
- 배열의 평균값 계산하기
var _array = [10, 20, 30, 40];
var _average = function(_previous, _current, _index){
return (_previous * _index + _current) / (_index + 1);
};
var avg_value = array_reduce(_array, _average, 0);
- 배열의 문자열 결합하기
var _array = ["Hello", " ", "World", "!"];
var _concat = function(_previous, _current){
return _previous + _current;
};
var result = array_reduce(_array, _concat);