JavaScript

JavaScript Map() ๋ฉ”์„œ๋“œ ์ดํ•ดํ•˜๊ธฐ

kohi โ˜• 2022. 10. 4. 21:17

๐Ÿ” Map ์ •์˜


  • Map() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด ๋‚ด ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•˜์—ฌ callbackFunction์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • Map() ๋ฉ”์„œ๋“œ๋Š” ์ƒˆ๋กœ์šด ์ž๋ฃŒ๊ตฌ์กฐ ํ˜น์€ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ์ƒˆ๋กœ์šด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•œ ํšŒ์›๋“ค์˜ ์ด๋ฆ„, ๋‚˜์ด, ์—ฐ๋ฝ์ฒ˜๋กœ ๋‚˜๋ˆ„์–ด์ง„ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์นœ ํšŒ์› ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์— map() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • callbackFunction, thisArg ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ–๊ณ , callbackfunction์€ currentValue, index, array ์„ธ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

arr.map(callback(currentValue[, index[, array]])[, thisArg])

 

callbackFunction

  • ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜ ํŠน์ • ์‹œ์ ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ์‹œ์Šคํ…œ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜
  • ๋‹ค๋ฅธ ์ฝ”๋“œ์˜ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ํ•จ์ˆ˜ (์ œ์–ด๊ถŒ๋„ ํ•จ๊ป˜ ์œ„์ž„)

 

currentValue

  • ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘ ํ˜„์žฌ ๊ฐ’

 

index (Optional)

  • ํ˜„์žฌ ๊ฐ’์˜ ์ธ๋ฑ์Šค

 

array (Optional)

  • map() ๋ฉ”์„œ๋“œ์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฐฐ์—ด ์ž์ฒด

 

thisArg (Optional)

  • callback Function ๋‚ด๋ถ€์—์„œ **this๋กœ ์ธ์‹ํ•  ๋Œ€์ƒ
  • ์ƒ๋žตํ•  ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ „์—ญ ๊ฐ์ฒด๊ฐ€ ๋ฐ”์ธ๋”ฉ

** this: ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ๋˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๊ธฐ ์ฐธ์กฐ ๋ณ€์ˆ˜

 

๐Ÿ” For loop์™€ Map ๋น„๊ต ์˜ˆ์ œ


 

๋ฐฐ์—ด nums์— 1์„ ๋”ํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

// for loop ์‚ฌ์šฉ

const nums = [0, 10, 100, 1000, 10000];
const result = [];

for (i = 0; i < nums.length; i++) {
    result.push(nums[i] + 1);
    if (i == 3) break;
}

console.log(result);
// [ 1, 11, 101, 1001 ]

 

// map ์‚ฌ์šฉ

const nums = [0, 10, 100, 1000, 10000];
const result = nums.map((nums) => nums + 1);

console.log(result);
// [ 1, 11, 101, 1001, 10001 ]

 

  • MAP์€ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฏ€๋กœ ์ค‘๊ฐ„์— “break;” ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ผ๋ฉด for loop๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • MAP์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด(result)์„ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค. ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด(nums)์˜ ๊ฐ’์„ ๋ณ€ํ˜•ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ” MAP() ์˜ˆ์ œ 01 | ๋ฐฐ์—ด์˜ ๊ฐ ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜ ์„ธ๊ธฐ


 

const name = ["MITT", "JIMIN", "MIEUN", "SUNWOO"];
const lengthOfName = name.map((name) => name.length);

console.log(lengthOfName);
// [ 4, 5, 5, 6 ]

 

๐Ÿ’ฌ MAP์„ ํ†ตํ•ด name์˜ ๊ฐ ์š”์†Œ๋“ค์˜ length๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„, lengthOfName์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.

 

๐Ÿ” MAP() ์˜ˆ์ œ 02 | ๋ฐฐ์—ด ์† ๊ฐ์ฒด ์žฌ๊ตฌ์„ฑ


 

const arr = [
    { name: "MITT", age: 28 },
    { name: "SOPHIE", age: 26 },
    { name: "PICKLE", age: 23 },
];

const new_arr = arr.map(function (obj) {
    const rObj = {};
    rObj[obj.name] = obj.age;
    return rObj;
});

console.log(arr);
/* [  { name: 'MITT', age: 28 },
  { name: 'SOPHIE', age: 26 },
  { name: 'PICKLE', age: 23 }] */

console.log(new_arr);
// [ { MITT: 28 }, { SOPHIE: 26 }, { PICKLE: 23 } ]

 

๐Ÿ” map ์˜ˆ์ œ 03 | ์—ฐ๋ด‰ 10% ์ธ์ƒ


 

const employee = [
    { name: "MITT", rank: "manager", salary: 6000 },
    { name: "MIEUN", rank: "supervisor", salary: 4800 },
    { name: "JIMIN", rank: "staff", salary: 3100 },
    { name: "SUNWOO", rank: "staff", salary: 3000 },
];

const raisedSalaryList = employee.map((employee) => employee.salary * 1.1);
raisedSalaryList.forEach((salary) => console.log("salary : %d", salary));
/* salary : 6600
salary : 5280
salary : 3410
salary : 3300 */