๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DEV

Map Method ์ดํ•ดํ•˜๊ธฐ

by camille: 2024. 10. 20.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“˜ Map

map() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. for of forEach์ฒ˜๋Ÿผ ๋ฐฐ์—ด ๋‚ด ์š”์†Œ๋“ค์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์˜ ํ•œ ์ข…๋ฅ˜์ธ๋ฐ, ์กฐ๊ธˆ ๋…ํŠนํ•œ ๋ถ€๋ถ„์€ ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค returm๋˜๋Š” ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

First ex)

const array1 = [1, 2, 3, 4, 5];
const map1 = array1.map(x => x* 2);

console.log(map1);

< [ 2, 4, 6, 8, 10 ]

----------------------------------------------------------------------

Second ex)

const array2 = [6, 7, 8, 9, 10];
const map2 = array2.map((currentElement, index, array) => {
    return currentElement * 2;
});

console.log(map2)

< [ 12, 14, 16, 18, 20 ]

map ๋ฉ”์„œ๋“œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ(๋งค๊ฐœ๋ณ€์ˆ˜)๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋ฐ, ๊ทธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์š”์†Œ, index, ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์ด๋‹ค.
Second ex์—์„œ ๋ณด๋ฉด ์„ธ๋ฒˆ์งธ ๋ฐฐ์—ด์€ ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์™€, ๋‘ ๋ฒˆ์งธ index๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

์ฝ˜์†” ๊ฐ’์„ ์ฐ์–ด์„œ ๋ณด๋ฉด, ์—ฌ๊ธฐ์„œ ์š”์†Œ๋Š” ๋ฐ˜๋ณต์ด ์ผ์–ด๋‚  ๋•Œ๋งˆ๋‹ค 0๋ฒˆ ์ธ๋ฑ์Šค ๋ถ€ํ„ฐ ํ•ด๋‹นํ•˜๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ํ• ๋‹น ๋˜๊ณ , ์ธ๋ฑ์Šค ๋˜ํ•œ ํ•ด๋‹น ์ธ๋ฑ์Šค์ธ ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ๋ณด๋ฉด, forEach์™€ ๋‹ค๋ฅผ ๊ฒƒ์ด ์—†์–ด๋ณด์ด์ง€๋งŒ,** ๐Ÿ’ก map์˜ ์ฐจ์ด์ ์€ ๋งˆ์ง€๋ง‰ ์ค„์—์„œ ํ™•์ธ ๋œ ๊ฒƒ ์ฒ˜๋Ÿผ ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ ์ž๋ฆฌ์— ๋ฆฌํ„ด๋˜๋Š” ๋ฐฐ์—ด์ด ์žˆ๋‹ค๋Š” ์ **์ด๋‹ค.

๋”ฐ๋ผ์„œ, map์€ ๐Ÿ“š ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ๊ธธ์ด ๋งŒํผ์˜ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒŒ ํ•ต์‹ฌ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ return๊ฐ’์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

map4์— ๋‹ด๊ธด map๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

map์—์„œ ๊ทธ๋ƒฅ ์š”์†Œ๊ฐ’์„ returnํ•˜๊ฒŒ ๋˜๋ฉด ๋˜‘๊ฐ™์€ ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ** โœ…map๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์€ ๋ง ๊ทธ๋Œ€๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์ด ์„œ๋กœ ๊ฐ™๋”๋ผ๋„ ์•„๋ž˜์™€ ๊ฐ™์ด โœ…๊ฐ ๋ฐฐ์—ด๋“ค์„ ์ผ์น˜ ๋น„๊ตํ•  ๊ฒฝ์šฐ ๊ฒฐ๊ณผ ๊ฐ’์ด ์„œ๋กœ ์ฐจ์ด**๊ฐ€ ๋‚œ๋‹ค.

์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ map์˜ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์กฐ์ž‘ํ•ด์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

map ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ returnํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š”, ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ undefined๊ฐ€ ์ฑ„์›Œ์ง„ ๋ฐฐ์—ด์ด ๋ฆฌํ„ด๋œ๋‹ค.


const a = [
  {key:1, value:10},
  {key:2, value:20},
  {key:3, value:30}
];

const b = a.map(function(obj){
  const rObj= {};
  rObj[obj.key] =obj.value;
  return rObj;
})

console.log(a);
console.log(b);

< [
  { key: 1, value: 10 },
  { key: 2, value: 20 },
  { key: 3, value: 30 }
 ]


< [ { '1': 10 }, { '2': 20 }, { '3': 30 } ]

map์„ ํ™œ์šฉํ•ด ๋ฐฐ์—ด ์† ๊ฐ์ฒด๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ
์œ„์˜ ์ฝ”๋“œ๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ๋ฐฐ์—ด์„ ๋ฐ›์•„ ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‹ค๋ฅธ ํ˜•๋Œ€๋กœ ์žฌ๊ตฌ์„ฑํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
  return num * 2;
});
< /*doubles๋Š” ์ด์ œ*/ [2, 8, 18]
<  /*numbers๋Š” ๊ทธ๋Œ€๋กœ*/ [1, 4, 9]

์ธ์ž๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž ๋ฐฐ์—ด ์žฌ๊ตฌ์„ฑ
์œ„์˜ ์ฝ”๋“œ๋Š” ์ธ์ž๊ฐ€ ํ•œ๊ฐœ์ธ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ map์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด์ค€๋‹ค. ์ธ์ž์ธ ๋ฐฐ์—ด๊ณผ ์•ˆ์˜ ์š”์†Œ๋“ค์€ map์„ ํ†ตํ•ด ์ˆœํšŒํ•˜๋ฉด์„œ ์›๋ณธ ๋ฐฐ์—ด๋กœ ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ํ• ๋‹น์ด ๋œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•