Skip to content

Latest commit

Β 

History

History
64 lines (54 loc) Β· 2.23 KB

File metadata and controls

64 lines (54 loc) Β· 2.23 KB

map, filter, reduce

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ κ΅¬ν˜„ν•œ map ν•¨μˆ˜

const map = (f, iter) => {
  let res = [];
  for (const a of iter) {
    res.push(f(a));// 좔상화(f ν•¨μˆ˜μ— 어떀값을 μˆ˜μ§‘ν• κ²ƒμΈμ§€ μœ„μž„ν•œλ‹€)
  }
  return res;
};

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ κ΅¬ν˜„ν•œ map ν•¨μˆ˜λŠ”

  • λ³΄μ‘°ν•¨μˆ˜(λ§€κ°œλ³€μˆ˜)λ₯Ό 톡해 μ΄ν„°λŸ¬λΈ” κ°’ 쀑 νŠΉμ • 값을 μˆ˜μ§‘ν•˜κ² λ‹€κ³  전달
  • mapν•¨μˆ˜λŠ” κ³ μ°¨ν•¨μˆ˜μ΄λ‹€.
  • mapν•¨μˆ˜λŠ” μ΄ν„°λŸ¬λΈ” ν”„λ‘œν† μ½œμ„ λ”°λ₯΄κ³  있기 λ•Œλ¬Έμ— λ‹€ν˜•μ„±μ΄ λ†’λ‹€ (μ΄ν„°λŸ¬λΈ” ν”„λ‘œν† μ½œμ„ μ€€μˆ˜ν•˜λŠ” ν•¨μˆ˜λ“€μ„ λ‹€ μ‚¬μš©ν•  수 있음)

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ κ΅¬ν˜„ν•œ filter ν•¨μˆ˜

const products = [
    {name: 'λ°˜νŒ”ν‹°', price: 15000},
    {name: 'κΈ΄νŒ”ν‹°', price: 20000},
    {name: 'ν•Έλ“œν°μΌ€μ΄μŠ€', price: 15000},
    {name: 'ν›„λ“œν‹°', price: 30000},
    {name: 'λ°”μ§€', price: 25000}
];

const filter = (f, iter) => {
    let res = [];
    for (const a of iter) {
        // ν•¨μˆ˜λ₯Ό 인자둜 λ°›μ•„μ„œ μ–΄λ–€ μ‘°κ±΄μΌλ•Œ 푸쉬할것인지
        // λ³΄μ‘°ν•¨μˆ˜μ—κ²Œ μœ„μž„μ„ν•œλ‹€. (쑰건을 적은 ν•¨μˆ˜λ₯Ό 인자둜 보내야함)
        if (f(a)) res.push(a);// 쑰건에 따라 ν•„ν„°
    }
    return res;//λΆ€μˆ˜ 효과둜 좜λ ₯을 ν•˜λŠ” 것이 μ•„λ‹ˆλΌ ν•¨μˆ˜μ˜ 리턴 κ°’μœΌλ‘œ 좜λ ₯
};

ν•„ν„°λŠ” νŠΉμ • λ°μ΄ν„°λ§Œ κ±ΈλŸ¬λ‚΄κ³  μ‹Άμ„λ•Œ, 쑰건을 κ±Έμ–΄ κ±ΈλŸ¬λ‚΄λŠ” ν•¨μˆ˜μ΄λ‹€.


ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ κ΅¬ν˜„ν•œ reduce ν•¨μˆ˜

const reduce = (f, acc, iter) => {// λ³΄μ‘°ν•¨μˆ˜, λˆ„μ  μ‹œμž‘κ°’, μ΄ν„°λ ˆμ΄ν„°
  if (!iter) {
		/* 이터가 없을 κ²½μš°μ— accκ°€ μ΄ν„°λ ˆμ΄ν„°μΌ 것이닀. 
           acc에 심볼 μ΄ν„°λ ˆμ΄ν„°λ₯Ό μ‹€ν–‰ν•΄μ„œ μ΄ν„°λŸ¬λΈ” 값을 μ΄ν„°λ ˆμ΄ν„°λ‘œ μ™„μ „νžˆ λ³€ν™˜ν•¨. */
    iter = acc[Symbol.iterator]();
    acc = iter.next().value;// acc 값은 이 μ΄ν„°λ ˆμ΄ν„° μ•ˆμ— μžˆλŠ” 첫 번째 κ°’μœΌλ‘œ ν•΄μ€˜μ•Ό λ˜λ‹ˆκΉŒ μ΄ν„°λ ˆμ΄ν„° valueλ₯Ό λ„£μ–΄μ€Œ.
  }
  for (const a of iter) {
    acc = f(acc, a);
  }
  return acc;
};
  • reduceλŠ” 값을 μΆ”κ²©ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€. (μ΄ν„°λŸ¬λΈ” 값을 ν•˜λ‚˜μ˜ κ°’μœΌλ‘œ 좔격해 λ‚˜κ°€λŠ” ν•¨μˆ˜)
  • λ³΄μ‘°ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ μ–΄λ–»κ²Œ 좔격할지λ₯Ό μœ„μž„ν•œλ‹€.