๐ 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์ ํตํด ์ํํ๋ฉด์ ์๋ณธ ๋ฐฐ์ด๋ก ๋ถํฐ ์๋์ผ๋ก ํ ๋น์ด ๋๋ค.
'DEV' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React : mapํจ์ ์ ์ฉ์ key props๋ฅผ ๋ถ์ฌํ๋ ์ด์ (0) | 2024.10.20 |
---|---|
Design : UI ์ปดํฌ๋ํธ ์ข ๋ฅ ๋ฐ ํน์ง (3) | 2024.10.20 |
React : State, Props, Event (0) | 2024.10.20 |
React : SPA & SCSS (1) | 2024.10.20 |
React (0) | 2024.10.20 |