reduce考え込む
9025 ワード
reduceの使用方法
array.reduce(function(accumulator, currentValue, currentIndex, array) {
}, initialValue);
reduce関数の特徴は、各要素を巡回するたびに、関数で定義されたメソッドに基づいて返される値がアキュムレータに含まれることです.そのため、アキュムレータに初期値を設定する必要があります.初期値を指定します.
積算値は初期値、配列の0番目のインデックスは現在値です.
初期値が指定されていません.
積算値は配列の0番目のインデックスとなり、現在の値は配列の最初のインデックスとなります.
reduce関数の使用方法
reduce関数を使用する方法は、累積値(初期値)があるかどうかによって異なります.
//배열의 모든 요소를 더한후 리턴해라.
//1. 누적값(에 초기값이) 있는지 없는지 판단한다.
let total = initValue;
let func = function(acc, cur) {
return acc + cur;
}
if(total !== undefined) {
//if문 안은 누적값이 있기때문에 이 안에서 작동할 반복문을 구현해본다.
for(let i=0; i<arr.length; i++) {
//total = total + arr[i];
total = func(total, arr[i);
}
return total;
} else {
//누적값이 없을 때는 배열의 0번째 인덱스가 초기값이 된다.
total = arr[0];
for(let i=1; i<arr.length; i++) {
total = func(total, arr[i]);
}
return total;
}
直接reduce関数の実装を試みる
_.reduce = function(arr, iter, initValue) {
let total = initValue;
//누적값(초기값)이 있는 경우
if(total !== undefined) {
/*for(let i=0; i<arr.length; i++) {
total = iter(total, arr[i], index, arr);
}*/
let newFunc = function(element, index, arr) {
total = iter(total, element, index, arr);
}
_.each(arr, newFunc);
return total;
} else {
//누적값(초기값)이 없는 경우
//arr에서 0번째 값을 누적값에 넣어주고,
//현재값을 arr의 1번째를 넣어주고,
//반복문 안에서는 반복의 시작을 배열의 1번째부터 돌려야 된다.
let newArr = _.slice(arr, 1);
let newFunc = function(element, index, arr) {
total = iter(total, element, index, arr);
}
_.each(newArr, newFunc);
return total;
}
}
Reference
この問題について(reduce考え込む), 我々は、より多くの情報をここで見つけました https://velog.io/@jy777hi/reduce-깊게-생각하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol