썸넀일은 같은 식에 λŒ€ν•΄ 각각 reduce() 와 forEach()λ₯Ό ν™œμš©ν–ˆμ„ λ•Œμ˜ μ½”λ“œ 길이 비ꡐ...

.reduce()πŸ’‘


μ½”λ”©ν…ŒμŠ€νŠΈλ₯Ό ν’€λ‹€ for문을 μ΄μš©ν•΄ μ—΄μ€„κ°€κΉŒμ΄ κΈΈμ–΄μ‘Œλ˜ μ½”λ“œκ°€ reduce() ν•œλ°©μ— ν•œ μ€„λ‘œ μ •λ¦¬λ˜λŠ” 것을 보고 μ•Œμ•„λ³΄κ²Œ 된 reduce() ν•¨μˆ˜μž…λ‹ˆλ‹€βœοΈ


πŸ’›λ°°μ—΄μ„ μˆœνšŒν•˜λ©° λˆ„μ κ°’μ„ λ°˜ν™˜ν•˜λŠ”.reduce()


1. reduce()ν•¨μˆ˜λ‚΄μ— callbackν•¨μˆ˜μ™€ μ΄ˆκΈ°κ°’μ„ λ§€κ°œλ³€μˆ˜λ‘œ λ„£λŠ”λ‹€

	arr.reduce(callback, initialValue)

	//μ΄ˆκΉƒκ°’μ€ μƒλž΅ κ°€λŠ₯
	arr.reduce(callback)

2. μ½œλ°±ν•¨μˆ˜μ—λŠ” λˆ„μ κ°’, ν˜„μž¬μš”μ†Œ, μΈλ±μŠ€κ°’κ³Ό 배열이 λ§€κ°œλ³€μˆ˜λ‘œ 주어진닀

	arr.reduce((acc, cur, idx, arr) => {})
	acc(accumulator): 콜백의 계산식을 λˆ„μ ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” μš”μ†Œ
    cur(current value): μ²˜λ¦¬ν•  ν˜„μž¬ μš”μ†Œ
    idx(index): ν˜„μž¬ μš”μ†Œμ˜ 인덱슀 κ°’
    arr(array): reduce()ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ λ°°μ—΄(본체)

2-1. index와 arr(reduceλ₯Ό ν˜ΈμΆœν•œ λ°°μ—΄)은 optionalν•œ κ°’μœΌλ‘œ μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€

	arr.reduce((acc, cur) => {})

2-2. μ΄ˆκΈ°κ°’μ΄ μžˆλŠ” 경우 λˆ„μ κ°’(acc)에 ν• λ‹Ήλœλ‹€

	arr.reduce((0, cur, idx) => {}, 0)

3. μ½œλ°±ν•¨μˆ˜ λ‚΄μ˜ 계산식을 μ‹€ν–‰ν•˜κ³  λˆ„μ κ°’(acc)을 λ°˜ν™˜ν•œλ‹€

	let arr = [1,2,3,4]
    
    // arrλ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό λ”ν•œ λˆ„μ κ°’μ„ λ¦¬ν„΄ν•˜λŠ” 식
	arr.reduce((acc, cur) => acc + cur)

	// 1 + 2 + 3 + 4
    arr = 10;

μœ„μ˜ ν•¨μˆ˜μ‹μ„ ν‘œλ‘œ μž‘μ„±ν•˜μžλ©΄

횟수(arr.length)acc+curλˆ„μ κ°’
1null+11
21+23
33+36
46+410

=> μ΅œμ’…μ μœΌλ‘œ 10을 λ°˜ν™˜

*μ΄ˆκΉƒκ°’(initialValue)λ₯Ό μ„€μ •ν•œ 경우 null μžλ¦¬μ— ν• λ‹Ή


πŸ’›μ΄ˆκΈ°κ°’μ„ ν™œμš©ν•œ μ‘μš©λ²•


μ΄ˆκΈ°κ°’μ„ λ°°μ—΄λ‘œ λ§Œλ“€μ–΄ ν• λ‹Ήν•˜λ©΄ reduce() ν•¨μˆ˜ ν•˜λ‚˜λ‘œ .map()κ³Ό .filter() 등을 λŒ€μ‹ ν•  수 μžˆλ‹€

	let arr = [1,2,3,4,5]
        
    //λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό 2λ°° κ³±ν•˜μ—¬ 리턴
	arr.reduce((acc, cur) => {
      acc.push(cur * 2)  
      return acc
    }, [])

	arr = [2,4,6,8,10]

	// μ•„λž˜μ˜ 식과 κ°™λ‹€
	arr.map((cur) => cur * 2)

μœ„μ™€κ°™μ΄ reduce() ν•¨μˆ˜λ₯Ό 잘만 ν™œμš©ν•˜λ©΄ λŒ€λΆ€λΆ„μ˜ λ°°μ—΄λ©”μ†Œλ“œλ₯Ό λŒ€μ‹ ν•  수 μžˆλ‹€κ³  ν•œλ‹€ !


λ§ˆμΉ˜λ©°πŸ™Œ

λ°°μ—΄κ΄€λ ¨ λ©”μ†Œλ“œλ“€μ„ μ–Έμ  κ°€ μ°¨κ·Όμ°¨κ·Ό 곡뢀해야겠닀고 μƒκ°λ§Œ ν•˜κ³  μ‹€μ²œν•œ 적은 μ—†μ—ˆλŠ”λ°
μ½”ν…Œλ¬Έμ œλ₯Ό ν’€λ‹€λ³΄λ‹ˆ ν•˜λ‚˜μ”© ν•„μš”μ„±μ„ 느껴 μ–΄λ–»κ²Œλ“  μ‹œμž‘ν•˜κ²Œ λ˜λŠ” 것 κ°™λ‹€..!

profile
ν”„λ‘ νŠΈμ—”λ“œ 개발자 μ„±μž₯일기 πŸ’­

0개의 λŒ“κΈ€