๐Ÿ’ซArray.reduce() ํ•จ์ˆ˜

Kyla Kimยท2024๋…„ 5์›” 12์ผ

ํ”„์—”๊ฟˆ๋‚˜๋ฌด

๋ชฉ๋ก ๋ณด๊ธฐ
8/8

๐ŸŸฃ reduce() ํ•จ์ˆ˜

arr.reduce(callback[, initialValue])

reduce() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋ฆฌ๋“€์„œ (reducer) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฆฌ๋“€์„œ ํ•จ์ˆ˜ ๋Š” ๋„ค ๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ๋ˆ„์‚ฐ๊ธฐ (acc)
  • ํ˜„์žฌ ๊ฐ’ (cur)
  • ํ˜„์žฌ ์ธ๋ฑ์Šค (idx)
  • ์›๋ณธ ๋ฐฐ์—ด (src)

๋ฆฌ๋“€์„œ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ ๋ˆ„์‚ฐ๊ธฐ์— ํ• ๋‹น๋˜๊ณ , ๋ˆ„์‚ฐ๊ธฐ๋Š” ์ˆœํšŒ ์ค‘ ์œ ์ง€๋˜๋ฏ€๋กœ ๊ฒฐ๊ตญ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์ด ๋œ๋‹ค.

๋ˆ„์‚ฐ : ์ด๋ฏธ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ์— ์ˆ˜์น˜๋ฅผ ๊ณ„์† ๋”ํ•˜์—ฌ ๊ณ„์‚ฐํ•จ

โœ… ๋งค๊ฐœ๋ณ€์ˆ˜

  1. callback
    ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ํ•จ์ˆ˜. ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ์ธ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค.

    • accumulator
      ๋ˆ„์‚ฐ๊ธฐ๋Š” ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ˆ„์ ํ•œ๋‹ค. ์ฝœ๋ฐฑ์˜ ์ด์ „ ๋ฐ˜ํ™˜๊ฐ’ ๋˜๋Š”, ์ฝœ๋ฐฑ์˜ ์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœ์ด๋ฉด์„œ initialValue๋ฅผ ์ œ๊ณตํ•œ ๊ฒฝ์šฐ์—๋Š” initialValue์˜ ๊ฐ’.

    • currentValue
      ์ฒ˜๋ฆฌํ•  ํ˜„์žฌ ์š”์†Œ.

    • currentIndex Optional (์„ ํƒ)
      ์ฒ˜๋ฆฌํ•  ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค. initialValue๋ฅผ ์ œ๊ณตํ•œ ๊ฒฝ์šฐ 0, ์•„๋‹ˆ๋ฉด 1๋ถ€ํ„ฐ ์‹œ์ž‘.

    • array Optional (์„ ํƒ)
      reduce()๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด.

  2. initialValue (์„ ํƒ)
    callback์˜ ์ตœ์ดˆ ํ˜ธ์ถœ์—์„œ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์— ์ œ๊ณตํ•˜๋Š” ๊ฐ’. ์ดˆ๊ธฐ๊ฐ’์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์‚ฌ์šฉ. ๋นˆ ๋ฐฐ์—ด์—์„œ ์ดˆ๊ธฐ๊ฐ’ ์—†์ด reduce()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

โœ… ๋ฐ˜ํ™˜๊ฐ’

๋ˆ„์  ๊ณ„์‚ฐ์˜ ๊ฒฐ๊ณผ ๊ฐ’

์ฐธ๊ณ  : Array.prototype.reduce() _ mdn web docs

profile
The only way of discovering the limits of the possible is to venture a little way past them into the impossible.

0๊ฐœ์˜ ๋Œ“๊ธ€