๐จโ๐ป ์ค๋ ๊ณต๋ถํ ๊ฒ
each๋ฅผ ๊ตฌํํ ํจ์ = function(collections, interatee){
let result = [];
if(Array.isArray(collections)){
let idx = 0;
for(let el of collections){
interatee(el, idx, collections);
idx += 1;
}
}else{
for(let key in collections){
interatee(key, collections[key]);
}
}
}
: ๋ํ์ ์ผ๋ก each์ ๊ตฌํํด๋ดค๋๋ฐ each๋ฅผ ๊ตฌํํ ํจ์(๋ฐฐ์ด๋๋๊ฐ์ฒด, ํจ์)
, ์ด๋ ๊ฒ ์ธ์๊ฐ์ ๋ฐ๋๋ค.
๋ฐฉ๊ธ ๊ตฌํํ ._each์ ์ด์ฉํ์ฌ map์ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ๋ค.
const sum = (num) => {
return num + 1;
}
_.map = function(arr, sum){
let result = [];
// ๋ฐฐ์ด์ ์์์ ์ธ๋ฑ์ค๊ฐ์ ์ฐ๊ฒ ๋จ ์๋ฏธ
each๋ฅผ ๊ตฌํํ ํจ์(arr, function(el, idx){
result.push(sum(el));
})
}
๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํ์ฌ each๋ฅผ ๊ตฌํํ ํจ์
์์ ๋๋ฒ์งธ์ธ์๊ฐ์ ํจ์๋ฅผ ๋ฃ์ด์ฃผ๊ณ ๊ทธ ํจ์์ ๋งค๊ฐ๋ณ์๋ก each๋ฅผ ๊ตฌํํ ํจ์
์์interatee(el, idx, collections)
์ ์ธ์๋ฅผ ๋ฃ์ด์ค ๊ฒ์ฒ๋ผ el์ idx์ ๊ทธ๋๋ก ์ฌ์ฉํด์ ๊ตฌํํ๋ค.
๊ณ ์ฐจํจ์๋ฅผ ์ด๋ ๊ฒ๋ ์ฌ์ฉํ ์ ์๊ฒ ๊ตฌ๋๋ ๊ฑธ ์์๋ค.