Share
2025λ…„ 11μ›” 12일

🧩 JavaScript map() μ‚¬μš© μ‹œμ κ³Ό μ˜ˆμ‹œ 정리

map()은 λ°°μ—΄μ˜ 각 μš”μ†Œλ₯Ό λ³€ν™˜ν•˜μ—¬ μƒˆλ‘œμš΄ 배열을 λ§Œλ“œλŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
즉, β€œλ°°μ—΄μ˜ ν˜•νƒœλ‚˜ κ°’ 자체λ₯Ό λ°”κΎΈκ³  싢을 λ•Œβ€ μ‚¬μš©ν•©λ‹ˆλ‹€.


1️⃣ 숫자 계산할 λ•Œ

λ°°μ—΄μ˜ 각 μˆ«μžμ— μΌμ •ν•œ κ·œμΉ™μ„ μ μš©ν•˜κ³  싢을 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

const prices = [1000, 2000, 3000];
const tax = 0.1;

// λͺ¨λ“  가격에 μ„ΈκΈˆ μΆ”κ°€
const finalPrices = prices.map(price => price + price * tax);

console.log(finalPrices); // [1100, 2200, 3300]

πŸ’‘ map()은 원본 λ°°μ—΄(prices)을 λ³€κ²½ν•˜μ§€ μ•Šκ³ , μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•©λ‹ˆλ‹€.


2️⃣ λ¬Έμžμ—΄μ΄λ‚˜ 객체의 νŠΉμ • κ°’λ§Œ 뽑을 λ•Œ

객체 λ°°μ—΄μ—μ„œ νŠΉμ • μ†μ„±λ§Œ μΆ”μΆœν•  λ•Œ 자주 μ‚¬μš©ν•©λ‹ˆλ‹€.

const users = [
  { name: "Tom", age: 25 },
  { name: "Jane", age: 30 },
  { name: "Kim", age: 28 }
];

// μ΄λ¦„λ§Œ μΆ”μΆœ
const names = users.map(user => user.name);

console.log(names); // ["Tom", "Jane", "Kim"]

πŸ’‘ κΈ°μ‘΄ 객체 κ΅¬μ‘°λŠ” κ·ΈλŒ€λ‘œ 두고, ν•„μš”ν•œ λ°μ΄ν„°λ§Œ κΊΌλ‚΄ μƒˆ 배열을 λ§Œλ“­λ‹ˆλ‹€.


3️⃣ 데이터 ν˜•μ‹μ„ λ°”κΏ”μ•Ό ν•  λ•Œ

μ„œλ²„μ—μ„œ 받은 데이터λ₯Ό ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ μ“Έ 수 있게 가곡할 λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

const rawData = [
  { firstName: "Tom", lastName: "Lee" },
  { firstName: "Jane", lastName: "Kim" }
];

// fullName ν˜•μ‹μœΌλ‘œ λ³€ν™˜
const formatted = rawData.map(user => ({
  fullName: `${user.firstName} ${user.lastName}`
}));

console.log(formatted);
// [{ fullName: "Tom Lee" }, { fullName: "Jane Kim" }]

πŸ’‘ map()은 각 객체λ₯Ό μƒˆλ‘œμš΄ ꡬ쑰둜 λ³€ν™˜ν•  λ•Œλ„ μ ν•©ν•©λ‹ˆλ‹€.


4️⃣ Reactμ—μ„œ JSX 리슀트 λ Œλ”λ§ μ‹œ

Reactμ—μ„œλŠ” 리슀트λ₯Ό λ Œλ”λ§ν•  λ•Œ map()을 거의 ν•„μˆ˜λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€.

const fruits = ["사과", "λ°”λ‚˜λ‚˜", "포도"];

function FruitList() {
  return (
    <ul>
      {fruits.map((fruit, index) => (
        <li key={index}>{fruit}</li>
      ))}
    </ul>
  );
}

πŸ’‘ map()을 μ‚¬μš©ν•˜λ©΄ λ°°μ—΄ 데이터λ₯Ό JSX μš”μ†Œλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


5️⃣ 쀑첩 λ°°μ—΄(2D λ°°μ—΄) λ³€ν™˜ μ‹œ

쀑첩 κ΅¬μ‘°μ—μ„œλ„ map()을 쀑첩해 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

const matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

// λͺ¨λ“  κ°’ 2배둜
const doubledMatrix = matrix.map(row => row.map(n => n * 2));

console.log(doubledMatrix);
// [[2, 4, 6], [8, 10, 12], [14, 16, 18]]

πŸ’‘ 닀차원 배열도 map() μ€‘μ²©μœΌλ‘œ μ†μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


🧠 정리 β€” map()을 써야 ν•  λ•Œ

상황 μ„€λͺ… μ˜ˆμ‹œ
κ°’ λ³€ν™˜ λͺ¨λ“  값에 일정 계산 적용 μ„ΈκΈˆ, λ‹¨μœ„ λ³€ν™˜ λ“±
νŠΉμ • λ°μ΄ν„°λ§Œ μΆ”μΆœ 객체 λ°°μ—΄μ—μ„œ ν•„μš”ν•œ ν•„λ“œλ§Œ 뽑기 μ΄λ¦„λ§Œ μΆ”μΆœ
데이터 ꡬ쑰 λ³€κ²½ μ„œλ²„ 응닡 데이터λ₯Ό λ‹€λ₯Έ ν˜•νƒœλ‘œ μž¬κ°€κ³΅ firstName β†’ fullName
JSX λ³€ν™˜ React μ»΄ν¬λ„ŒνŠΈμ—μ„œ 리슀트 λ Œλ”λ§ <li> 리슀트 생성
쀑첩 ꡬ쑰 λ³€ν™˜ 2D λ°°μ—΄μ΄λ‚˜ 객체 μ•ˆμ˜ λ°°μ—΄ 처리 matrix.map(row => row.map(...))

πŸ”š 마무리

map()은 λ‹¨μˆœνžˆ 배열을 λ°˜λ³΅ν•˜λŠ” μš©λ„κ°€ μ•„λ‹ˆλΌ,
데이터λ₯Ό **β€œλ‹€λ₯Έ ν˜•νƒœλ‘œ λ³€ν™˜β€**ν•˜λŠ” 데 μ΅œμ ν™”λœ ν•¨μˆ˜μž…λ‹ˆλ‹€.
특히 React, 데이터 가곡, API 응닡 처리 λ“±μ—μ„œ 맀우 자주 μ“°μ΄λŠ” ν•„μˆ˜ λ¬Έλ²•μž…λ‹ˆλ‹€ πŸ’ͺ