thumbnail
forEach와 map
Front-End
2023.07.19.

forEach와 map

forEach와 map은 λͺ¨λ‘ JavaScript λ°°μ—΄μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€. λ‘˜ λ‹€ λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œμ— λŒ€ν•΄ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€λ§Œ, 적용 방식이 λ‹€λ¦…λ‹ˆλ‹€.

forEachλŠ” 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ©΄μ„œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹ , λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 이 콜백 ν•¨μˆ˜λŠ” λ°°μ—΄ μš”μ†Œμ™€ ν•΄λ‹Ή 인덱슀λ₯Ό 인수둜 λ°›μŠ΅λ‹ˆλ‹€.

const numbers = [1, 2, 3, 4, 5];

numbers.forEach((number, index) => {
  console.log(`Index ${index}의 값은 ${number}μž…λ‹ˆλ‹€.`);
});

map은 λ°˜λ©΄μ— μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 μƒˆλ‘œμš΄ 배열은 μ›λž˜ λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ 콜백 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œ κ²°κ³Όμž…λ‹ˆλ‹€. 이 콜백 ν•¨μˆ˜λŠ” 각 μš”μ†Œλ₯Ό 인수둜 λ°›μœΌλ©°, 처리된 κ²°κ³ΌλŠ” μƒˆλ‘œμš΄ 배열에 μΆ”κ°€λ©λ‹ˆλ‹€.

const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map((number) => {
  return number * 2;
});

console.log(doubledNumbers); // [2, 4, 6, 8, 10]

λ”°λΌμ„œ, μ›λž˜ λ°°μ—΄μ˜ 값을 λ³€κ²½ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•΄μ•Ό ν•˜λŠ” κ²½μš°μ—λŠ” map을 μ‚¬μš©ν•˜λŠ” 것이 더 μ ν•©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ›λž˜ λ°°μ—΄μ˜ 값을 λ³€κ²½ν•˜μ§€ μ•Šκ³  각 μš”μ†Œμ— λŒ€ν•΄ 일련의 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ €λŠ” κ²½μš°μ—λŠ” forEachλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 μ ν•©ν•©λ‹ˆλ‹€.

ν™”μ‚΄ν‘œ ν•¨μˆ˜

ν™”μ‚΄ν‘œ ν•¨μˆ˜(arrow function)λŠ” ν•¨μˆ˜ ν‘œν˜„μ‹μ„ κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλŠ” ES6 κΈ°λŠ₯ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λŠ” 데 λ“€μ–΄κ°€λŠ” 곡간과 μ‹œκ°„μ„ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, λ‹€μŒκ³Ό 같이 map ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 일반적인 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map(function(number) {
  return number * 2;
});

ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 더 κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map((number) => {
  return number * 2;
});

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같은 νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • function ν‚€μ›Œλ“œ λŒ€μ‹  => 기호λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν•¨μˆ˜μ˜ μΈμˆ˜κ°€ ν•˜λ‚˜λΏμ΄λ©΄ κ΄„ν˜Έλ₯Ό μƒλž΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν•¨μˆ˜μ˜ 본문이 ν•œ 쀄인 경우 μ€‘κ΄„ν˜Έλ₯Ό μƒλž΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ, 본문의 결과값이 λ°˜ν™˜λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, number * 2 λŒ€μ‹  number => number * 2와 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map(number => number * 2);

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌκΈ° λ•Œλ¬Έμ— React μ»΄ν¬λ„ŒνŠΈμ—μ„œλ„ 자주 μ‚¬μš©λ©λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈμ˜ λ©”μ†Œλ“œλ₯Ό μž‘μ„±ν•  λ•Œμ—λ„ ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

class MyComponent extends React.Component {
  handleClick = () => {
    console.log('Button clicked!');
  }

  render() {
    return (
      <button onClick={this.handleClick}>Click me</button>
    );
  }
}

ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ 또 λ‹€λ₯Έ μž₯점은, this ν‚€μ›Œλ“œμ˜ λ™μž‘ 방식이 일반 ν•¨μˆ˜μ™€ λ‹€λ₯΄λ‹€λŠ” μ μž…λ‹ˆλ‹€. ν•¨μˆ˜κ°€ μ–΄λ””μ„œ μ‹€ν–‰λ˜λŠ”μ§€μ— 따라 this ν‚€μ›Œλ“œκ°€ κ°€λ¦¬ν‚€λŠ” λŒ€μƒμ΄ λ‹¬λΌμ§€λŠ” 일반 ν•¨μˆ˜μ™€ 달리, ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” 항상 μƒμœ„ μŠ€μ½”ν”„μ˜ this 값을 μ‚¬μš©ν•©λ‹ˆλ‹€. 이둜 인해, ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ this ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” κ³³μ—μ„œ μƒκΈ°λŠ” 였λ₯˜λ₯Ό 방지할 수 μžˆμŠ΅λ‹ˆλ‹€.

Thank You for Visiting My Blog, Have a Good Day πŸ˜†
Β© 2023 Developer JaeHyeon, Powered By Gatsby.