05. reduce

양희쀀·2021λ…„ 11μ›” 7일
0

JS Array Method

λͺ©λ‘ 보기
5/7
post-thumbnail

πŸ“Œ 5-1 reduceλž€?

βœ” λ°°μ—΄.reduce(μ½œλ°±ν•¨μˆ˜(λˆ„μ κ°’, ν˜„μž¬κ°’, ν˜„μž¬ 인덱슀, λ°°μ—΄), μ΄ˆκΈ°κ°’)
βœ” λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•˜μ—¬ 싀행값을 λˆ„μ ν•˜λ©΄μ„œ 단 ν•˜λ‚˜μ˜ 값을 λ°˜ν™˜ν•œλ‹€.
βœ” μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ λ°°μ—΄μ˜ 첫 인덱슀 κ°’μœΌλ‘œ μ΄ˆκΈ°κ°’μ΄ μ‹€ν–‰λœλ‹€.

πŸ“Œ 5-2 reduce의 μž‘λ™μ˜ˆμ œ

λ°°μ—΄μ˜ 각 μš”μ†Œλ₯Ό μˆœνšŒν•˜λ©΄μ„œ λˆ„μ ν•œ ν•˜λ‚˜μ˜ 값을 λ°˜ν™˜ν•œλ‹€.

const arr = [1,2,3,4,5];
const reduce = arr.reduce((acc, curr, currindex, arr) => {
    console.log(acc, curr, currindex, arr);
});
// 1번 μ‹€ν–‰ 1 2 1 [ 1, 2, 3, 4, 5 ]
// 2번 μ‹€ν–‰ undefined 3 2 [ 1, 2, 3, 4, 5 ]
// 3번 μ‹€ν–‰ undefined 4 3 [ 1, 2, 3, 4, 5 ]
// 4번 μ‹€ν–‰ undefined 5 4 [ 1, 2, 3, 4, 5 ]
console.log(reduce); // undefined 좜λ ₯

πŸ’‘ 연산을 μ‹€ν–‰ν•˜λŠ” 싀행문이 μ—†μœΌλ―€λ‘œ undefindeκ°€ 좜λ ₯λœλ‹€.
πŸ’‘ 첫 λˆ„μ κ°’ μ‹œμž‘μ€ μ΄ˆκΈ°κ°’μ΄ μ—†μœΌλ―€λ‘œ λ°°μ—΄μ˜ 첫 인덱슀 값이 λ“€μ–΄κ°„λ‹€.

πŸ“Œ 5-3 reduce의 μ‚¬μš©μ˜ˆμ œ

const arr = [1,2,3,4,5];
const reduce = arr.reduce((acc, curr) => {
    console.log('λˆ„μ κ°’', acc, 'ν˜„μž¬ 넣을값', curr);
    return acc + curr;
});
// 1번 μ‹€ν–‰ λˆ„μ κ°’ 1 ν˜„μž¬ 넣을값 2
// 2번 μ‹€ν–‰ λˆ„μ κ°’ 3 ν˜„μž¬ 넣을값 3
// 3번 μ‹€ν–‰ λˆ„μ κ°’ 6 ν˜„μž¬ 넣을값 4
// 4번 μ‹€ν–‰ λˆ„μ κ°’ 10 ν˜„μž¬ 넣을값 5
console.log(reduce); // 15 좜λ ₯

πŸ’‘ 이처럼 값이 λˆ„μ λ˜λ©΄μ„œ ν•˜λ‚˜μ˜ 값을 λ°˜ν™˜ν•œλ‹€.

πŸ“Œ 5-4 reduce의 μ΄ˆκΈ°κ°’ μ‹€ν–‰

const arr = [1,2,3,4,5];
const reduce = arr.reduce((acc, curr) => {
    console.log('λˆ„μ κ°’', acc, 'ν˜„μž¬ 넣을값', curr);
    return acc + curr;
}, 10);
// 1번 μ‹€ν–‰ λˆ„μ κ°’ 10 ν˜„μž¬ 넣을값 1
// 2번 μ‹€ν–‰ λˆ„μ κ°’ 11 ν˜„μž¬ 넣을값 2
// 3번 μ‹€ν–‰ λˆ„μ κ°’ 13 ν˜„μž¬ 넣을값 3
// 4번 μ‹€ν–‰ λˆ„μ κ°’ 16 ν˜„μž¬ 넣을값 4
// 5번 μ‹€ν–‰ λˆ„μ κ°’ 20 ν˜„μž¬ 넣을값 5
console.log(reduce); // 25 좜λ ₯

πŸ’‘ 싀행이 ν•œλ²ˆ 더 μ§„ν–‰λœλ‹€. μ™œλƒν•˜λ©΄ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•˜μ˜€κΈ° λ•Œλ¬Έμ΄λ‹€.

πŸ“Œ 5-5 reduce의 λ°°μ—΄μ •μ œ

const arr = [1,2,3,4,5];
const reduce = arr.reduce((acc, curr) => {
    console.log('λˆ„μ κ°’', acc, 'ν˜„μž¬ 넣을값', curr);
    if(curr > 2) return [...acc, curr];
    else return acc;
}, []);
// 1번 μ‹€ν–‰ λˆ„μ κ°’ [] ν˜„μž¬ 넣을값 1
// 2번 μ‹€ν–‰ λˆ„μ κ°’ [] ν˜„μž¬ 넣을값 2
// 3번 μ‹€ν–‰ λˆ„μ κ°’ [] ν˜„μž¬ 넣을값 3
// 4번 μ‹€ν–‰ λˆ„μ κ°’ [ 3 ] ν˜„μž¬ 넣을값 4
// 5번 μ‹€ν–‰ λˆ„μ κ°’ [ 3, 4 ] ν˜„μž¬ 넣을값 5
console.log(reduce); // [ 3, 4, 5 ] 좜λ ₯

πŸ’‘ 빈 배열을 μ΄ˆκΈ°κ°’μœΌλ‘œ λ„£μ–΄μ£Όκ³  쑰건에 λ§žλŠ” 경우 accμ•ˆμ— μžˆλŠ” λ°°μ—΄ μš”μ†Œλ“€κ³Ό curr의 값을 μΆ”κ°€ν•΄μ„œ λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€.
πŸ’‘ 이처럼 λ°°μ—΄μ—μ„œ 쑰건의 맞게 μ •μ œκ°€ κ°€λŠ₯ν•˜λ‹€.

πŸ‘‰ κ³„μ‚°μ΄λ‚˜ 쑰건에 맞게 κ·Έλ£Ήν™”ν•˜λŠ”κ²ƒμ— μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. 아직 reduceλ₯Ό λ”ν•˜κΈ°ν•¨μˆ˜λ‘œ μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ reduce에 λŒ€ν•΄μ„œ μ•Œκ²Œλ˜λŠ” λ‚΄μš©μ΄ 있으면 μΆ”κ°€ν•  μ˜ˆμ •μ΄λ‹€.

πŸ˜‚ λ”ν•˜κΈ°λ‘œλ§Œ λ„ˆλ¬΄ 많이 μ‚¬μš©ν•œ 것 κ°™λ‹€....

μΆœμ €
MDN = Array.prototype.reduce()

profile
JS 코린이

0개의 λŒ“κΈ€