Language/JavaScript
[JS] ๐ map ๊ณ ์ฐจํจ์ - ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๋ช
์ธํ_
2021. 9. 28. 20:06
map ๊ณ ์ฐจํจ์
map์ callback ํจ์๋ฅผ ๊ฐ๊ฐ์ ์์์ ๋ํด ํ๋ฒ์ฉ ์์๋๋ก ๋ถ๋ฌ ๊ทธ ํจ์์ ๋ฐํ๊ฐ์ผ๋ก ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ ๋ค. array๋ฅผ ๋๋ฉด์ array ๋ก ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
array.map(callbackFunction(currenValue, index, array), thisArg)
- currentValue : ๋ฐฐ์ด ๋ด ํ์ฌ ๊ฐ
- index : ๋ฐฐ์ด ๋ด ํ์ฌ ๊ฐ์ ์ธ๋ฑ์ค
- array : ํ์ฌ ๋ฐฐ์ด
- thisArg : callbackFunction ๋ด์์ this๋ก ์ฌ์ฉ๋ ๊ฐ
var numbers = [ 1,2,3,4,5,6,7,8,9];
function multiplyTwo(number){
return number *2;
}
var newNumbers = numbers.map(multiplyTwo);
console.log(newNumbers); // [2, 4, 6, 8, 10, 12, 14, 16, 18]
var numbers = [4,9,16,25,36];
var result = numbers.map(Math.sqrt);
console.log(result); // [ 2, 3, 4, 5, 6 ]
map ํ์ฉ ์ค์ ์์
[๊ฐ์ฒด์์ name๊ฐ๋ง ์ถ์ถํด์ ๋ฐฐ์ด๋ก ์ ์ฅ]
var students = [
{id:1, name:"james"},
{id:2, name:"tim"},
{id:3, name:"john"},
{id:4, name:"brian"}
];
// for๋ฌธ
var arr = new Array();
for (let obj of students){
arr.push(obj.name);
}
console.log(arr); // ['james', 'tim', 'john', 'brian']
// map
var names = students.map(student =>student.name);
console.log(names); // ['james', 'tim', 'john', 'brian']
โ
[array1๋ฐฐ์ด์ ์์๋ค์ 2๋ฐฐ ํด์ค ๋ฐฐ์ด์ ๋ฐํ]
const array1 = [1, 4, 9, 16];
// for๋ฌธ ํ์ฉ
const mmm = (arr) => {
const arr2 = [];
for(let i of arr){
arr2.push(i*2);
}
return arr2;
}
// map ํจ์ ํ์ฉ
const map1 = array1.map(x => x * 2);
console.log(mmm(array1)); // [2,8,18,32]
console.log(map1); // [2,8,18,32]
[2์ฐจ์๋ฐฐ์ด ์ ๊ทผ]
var numbers = [[1,2,3],[4,5,6],[7,8,9]]; //array์์ array๊ฐ ์๋ ๊ฒฝ์ฐ
var newNumbers = numbers.map(array => array.map(number => number *2));
console.log(newNumbers);
โ
[๋ฆฌํฐ๋ด ํํ๋ก ๋ฐฐ์ด์ ์ผ์๋ก ์ ๋ฌ] (๊ตฌ์กฐ๋ถํด)
let prices = {
banana: 1,
orange: 2,
meat: 4,
};
let doublePrices = Object.fromEntries(
// ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํด์ ๋ฐฐ์ด ์ ์ฉ ๋ฉ์๋์ธ map์ ์ ์ฉํ๊ณ fromEntries๋ฅผ ์ฌ์ฉํด ๋ฐฐ์ด์ ๋ค์ ๊ฐ์ฒด๋ก ๋๋๋ฆฝ๋๋ค.
// [["banana", 1], ["orange", 2], ["meat", 4]]
Object.entries(prices).map(([key, value]) => [key, value * 2])
);
alert(doublePrices.meat); // 8
โ
[๊ฐ์ฒด๋ฅผ ๋ฐ์์์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด]
: DB์์ ์ฟผ๋ฆฌ๊ฐ๋ค์ ๋ฐฐ์ด๊ฐ์ฒด๋ก ์ ์ฅํ๊ณ , ๊ธฐ์กด ํ๋ ๋์ ์ฌ์ฉ์ ์ ์ ํ๋๋ฅผ ์์ฑํด ๋ค์ ๋ฐฐ์ด๊ฐ์ฒด์ ์ ์ฅ
const userList = [
{userId:"1", firstName:"Seungwon", lastName:"Go", yyyymmdd:"19770513", phone:"010-1111-1111", address:"Jeju"},
{userId:"2", firstName:"Jeremy", lastName:"Go", yyyymmdd:"19800103", phone:"010-1111-1112", address:"Seoul"},
{userId:"3", firstName:"James", lastName:"Go", yyyymmdd:"19821113", phone:"010-1111-1113", address:"Seoul"},
]; // DB์์ ๊ฐ์ ธ์จ ์ฟผ๋ฆฌ ์ ๋ณด๋ฅผ ๊ฐ์ฒด ํํ๋ก ์ ์ฅ
var mon = ["Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
const newUserList = userList.map(u => ({ // ๊ทธ๋ฅ u => { } ํ๋ฉด ํจ์๊ฐ ๋์ด๋ฒ๋ฆฌ๋ ๊ดํธ๋ก ๊ฐ์ธ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค๊ณ ๋ช
์
userId:u.userId, //๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ์๋ก์ด ํ๋ ์ถ๊ฐ
// firstName:u.firstName,
// lastName:u.lastName,
fullName:u.firstName+' '+u.lastName,
//yyyymmdd:u.yyyymmdd,
year: u.yyyymmdd.substring(0,4),
month: u.yyyymmdd.substring(4,6),
day: u.yyyymmdd.substring(6,8),
usDataFormat: mon[parseInt(u.yyyymmdd.substring(4,6)) - 1] + " " + parseInt(u.yyyymmdd.substring(6,8)) + ", " + parseInt(u.yyyymmdd.substring(0,4)),
//๋๋ผ๋ง๋ค ๋
์์ผ ์ค๋ ์์๊ฐ ๋ค๋ฅด๋ค. ์ด ํค๋ ์๋
์ผ ๋ก ์ค๊ฒ ํ๋ค.
phone:u.phone,
address:u.address
}));
console.log(newUserList);
์ ๋ฆฌํ์๋ฉด, map์ ๋ฐฐ์ด์ 1๋1๋ก ์ง์ง๋ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์๋ ๋ฉ์๋์ ๋๋ค.
๋ถ๋ก) map ๊ณผ forEach ์ฐจ์ด์
โ๊ณตํต์ : array๊ด๋ จ ๋ฉ์๋
- โforEach()๋ ๋ฐฐ์ด ์์๋ง๋ค ํ ๋ฒ์ฉ ์ฃผ์ด์ง ํจ์(์ฝ๋ฐฑ)๋ฅผ ์คํ
- map()์ ๋ฐฐ์ด ๋ด์ ๋ชจ๋ ์์ ๊ฐ๊ฐ์ ๋ํ์ฌ ์ฃผ์ด์ง ํจ์(์ฝ๋ฐฑ)๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
โ
.forEach()๋ ๊ฒฐ๊ณผ๋ก array๋ฅผ ๊ฐ์ง๊ธฐ ์ํด์ push๋ฅผ ํตํด ๋ฐฐ์ด์ ๋ง๋ค์ด์ค์ผํจ
โ
.map()์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ