function getData(salesArr, reviewArr, likeArr) {
for(i = 0; i < salesArr.length; i+=2) {
salesArr[i][1] + salesArr[i+1][1];
}
let objData = {
};
return objData;
}
salesArr1 = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
reviewArr1 = [["20190328", 3], ["20190401", 0], ["20190403", 1]];
likeArr1 = [["20190328", 98], ["20190401", 102], ["20190403", 125]];
....?
๋ญ์ง ์์ ๊ฐ๋ ์์จ๋ค.....ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ
์ด๋ฐ ์ฝ๋ ์ณ๋๊ณ ๋ฉํํฐ์ ธ์ ํค๋กฑํค๋กฑ ํ๊ณ ์๋ค๊ฐ....
์ง๋๊ฐ์๋ ์นํ๋์ด ํํธ(์น๊ณค ๋ง์ด ๊ธด ํํธ)๋ฅผ ๋์ ธ์ฃผ์
จ๋ค!!!
function getData(salesArr, reviewArr, likeArr) {
let sumAmount = 0;
let sumReview = 0;
let sumLike = 0; // ์ดํฉ ๋ณ์ ๋จผ์ ์ ์ธ!
for(let i = 0; i < salesArr.length; i++) {
sumAmount += salesArr[i][1]; // for ๋ฌธ ๋๋ฆฌ๋ฉด์ ์ ์ธํ ๋ณ์์ ํ์ํ ๊ฐ๋ง ์ถ๊ฐ
}
for(let i = 0; i < reviewArr.length; i++) {
sumReview += reviewArr[i][1];
}
for(let i = 0; i < likeArr.length; i++) {
sumLike += likeArr[i][1];
}
let objData = { // object์ ์ดํฉ๊ณ ๊ฐ ๋ฃ๊ธฐ!
sumAmount: sumAmount,
sumReview: sumReview,
sumLike: sumLike,
};
return objData;
}
salesArr1 = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
reviewArr1 = [["20190328", 3], ["20190401", 0], ["20190403", 1]];
likeArr1 = [["20190328", 98], ["20190401", 102], ["20190403", 125]];
getData(salesArr1, reviewArr1, likeArr1);
์ฑ๊ณต!!!!!!!!!!!!!!!!! ์ผ์์ ใ
ใ
ใ
ใ
ใ
ใ
ใ
ํฌ์ธํธ๋ ๊ฐ ๋ฐฐ์ด์ ์ดํฉ์ ์ ์ฅํ ๋ณ์๋ฅผ ๋จผ์ ์ ์ธํ๊ณ , for๋ฌธ์ผ๋ก ๋ฐฐ์ด์์ ๋ฐฐ์ด์ index๋ก ์ ๊ทผํด์ ๋จผ์ ์ ์ธํ ๋ณ์์ ์ฐจ๊ณก์ฐจ๊ณก ์ง์ด๋ฃ๋๊ฒ!
const getCookie = () => {
const name = "wecode_cookie";
const cookies = document.cookie.split(";");
for(let i in cookies) {
if(cookies[i].includes(name) === true) {
return cookies[i].slice(name.length+2,cookies[i].length);
}
}
}
getCookie();
cookie ๊ฐ ๊ฐ์ ธ์ค๋๊ฑด ๋ธ๋ก๊ทธ๋ฅผ ๋ง์ด ์ฐธ๊ณ ํ๊ณ , string์ ์ชผ๊ฐ๋๊ฑด ํผ์ ์๋ํ๋๋ฐ ํ๋ฒ๋ง์ OK!!
์ฌ๊ธฐ์ ํฌ์ธํธ๋ localStorage๋ sessionStorage๋ ๊ทธ๋ฅ key๊ฐ์ผ๋ก ์ ๊ทผํ๋ฉด ๋ฐ๋ก value๋ฅผ ๋ฑ์ด๋ด๋๋ฐ ๋ฐํด, cookie๋ cookie key=value ์ ๋ณด๋ฅผ ํ๋์ string์ผ๋ก ์ค์ค์ค ๋ฑ์ด๋ธ๋ค๋๊ฒ....๐ต
๋จ, ๊ฐ key=value ์ ๋ผ๋ฆฌ ;
์ผ๋ก ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ ์ด ;
๋ฅผ ๊ธฐ์ค์ผ๋ก string์ ์ชผ๊ฐ์ ๋ฐฐ์ด๋ก ๋ฐํํ ๋ค, cookies[i]
๋ก ๊ฐ cookie ๊ฐ์ ์ ๊ทผํ๋ค.
๋ฐฐ์ด๋ด์ ๋ชจ๋ i
๊ฐ์ ํ์ธํด์ผ ํ๋ฏ๋ก for in
๊ตฌ๋ฌธ์ ์ฌ์ฉํ๊ณ ์ฐพ์์ผ ํ๋ key ๊ฐ์ "wecode_cookie"
๋ ๋ฐ๋ก ๋ณ์๋ก ์ง์ ํด์ for๋ฌธ๊ณผ slice
๋ฉ์๋์ ์ด์ฉํ์!
slice
๋ฉ์๋๋ string ๊ณผ์ ํด๊ฒฐํ ๋ ์์ธํน๋ณ์ ๋๋ฌธ์ ๋ํต ๋นํด์ ๊ทธ๋ฐ์ง ์์ํ๊ฒ ํด๊ฒฐํ๋คใ
ใ
ใ
< ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ : http://magic.wickedmiso.com/72 >
let numsArr = [100, 9, 30, 7];
const moreThan100 = nums =>
nums.map( i => { if (i < 100) {
return false;
}
return true;
});
moreThan100(numsArr); // [ true, false, false, false ]
์ ์ ....๊ตฌ๊ธ๋ง๊ณผ ๋ธ๋ก๊ทธ์ ์์งํ๊ฒ ๋๋ค... ๋ ์ด๋๋ ๋๋๊ฑธ๊น....๐?
์ด๋ฒ ๋ฌธ์ ๋ ์ฒ ๋ณด๊ณ nums.map
์ i < 100
์กฐ๊ฑด์ผ๋ก(ํน์ i โค 100์ผ๋ก) if ๋ฌธ์ ๋๋ฆฌ๋ฉด ๋๊ฒ ๊ตฌ๋ ์ถ๊ธด ํ์ผ๋...
arrow function ์์์ if ์กฐ๊ฑด์ ๋ฃ๋๊ฒ ๋ฏ์ค๊ณ ์ด๋ ค์ ๋ค!
Array.map()
์ ์์ง๋ ํท๊ฐ๋ ค์.... forEach()
๋ ๊ฐ์ด ์ด๋ฒ์ฃผ๋ด๋ก ๋ฝ๊ฐ๊ธฐ์ ์ ๋ฆฌํ ์์ !!!
< ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ : https://www.zerocho.com/category/JavaScript/post/5acafb05f24445001b8d796d >
const moreThan100 = nums => {
return nums.map(el => el > 100);
}
์...?
oh ์์๋ ๋ชปํ ์ฝ๋ oh
( el > 100 )
์ boolean type ์ด๋๊น ๊ฐ์ด true
์๋๋ฉด false
๋ก ๋์จ๋ค!
์ฆ ์ ์ฝ๋๋ ํ ์ค๋ก return true/false
์ธ ๊ฒ.....!
์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์๋๊ฑธ.... ๊ตณ์ด if๋ฌธ์ผ๋ก ์ค์ค์ค ๊ธธ๊ฒ๋ ์ ์๋คใ ใ ใ ใ ๋ฐ์ฑ๋ฐ์ฑ....๐ญ
let birthDay = ['2019-03-21', '2019-04-21', '2019-05-21'];
const formatDate = dates =>
dates.map ( i => { for (let i in dates) {
return `${dates[i].slice(0, 4)}๋
${dates[i].slice(5, 7)}์ ${dates[i].slice(8, 10)}์ผ`;
}
})
formatDate(birthDay); // [ '2019๋
03์ 21์ผ', '2019๋
03์ 21์ผ', '2019๋
03์ 21์ผ' ]
birthDay
๋ฐฐ์ด์ [0]๋ฒ์งธ ๊ฐ์ธ 2019๋
03์ 21์ผ
๊ฐ์ด ๋ค๋ฅธ ๋ชจ๋ ๋ฐฐ์ด index ๊ฐ์ ๋ค์ด๊ฐ๋ฒ๋ฆฐ๋ค....
๊ทธ๋์ [ '2019๋
03์ 21์ผ', '2019๋
03์ 21์ผ', '2019๋
03์ 21์ผ' ]
๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋จ.....
๋ฐฐ์ด์ dates.map
์ ๋๋ฆฌ๋ ๊ณผ์ ์์ dates
๋ฐฐ์ด์ [0]๋ฒ์งธ, [1]๋ฒ์งธ, [2]๋ฒ์งธ...[n]๋ฒ์งธ index์ ๊น์ง ๊ฐ์ด ๋ค์ด๊ฐ์ผ ํ๋๋ฐ...
[0]๋ฒ์งธ๋ง ๊ณ์ฐํ๊ณ ๊ฐ์ ๋ฐํ
let birthDay = ['2019-03-21', '2019-04-21', '2019-05-21'];
let dateArr = [];
const formatDate = dates =>
dates.map ( i => { for (let i in dates) {
dateArr += `${dates[i].slice(0, 4)}๋
${dates[i].slice(5, 7)}์ ${dates[i].slice(8, 10)}์ผ`;
}
return dateArr;
})
formatDate(birthDay);
์์๋ฆฌ ํ๋ณ๋์ ๋์์ผ๋ก slice
๋ก ์ ๊ทผํ๋๊ฒ ํ๋ ธ๋ค๋๊ฑธ ์๊ฒ ๋์๋ค.....ใ
ใ
....
๊ทธ๋ฌ๋ฉด birthDay์ ๊ฐ [i]
๋ฒ์งธ ์์๋ค์ split
์ผ๋ก "-"
๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅธ๋ค์์ "๋
","์","์ผ"์ ๋ถ์ด๋ฉด ๋ ๊ฒ ๊ฐ๋ค!!
let birthDay = ['2019-03-21', '2019-04-21', '2019-05-21'];
const formatDate = dates => {
let format = dates.map( arr => {
let date = arr.split('-');
return `${date[0]}๋
${date[1]}์ ${date[2]}์ผ`;
})
return format;
}
formatDate(birthDay); // [ '2019๋
03์ 21์ผ', '2019๋
04์ 21์ผ', '2019๋
05์ 21์ผ' ]
์ฐ์!!!!!!!!! ํ๋ณ๋ ์ต๊ณ ๐๐๐๐๐๐๐๐
split
์จ์ "-"
๋จ์๋ก ์ชผ๊ฐ ๋์ผ๋๊น for ๋ฌธ ๋๋ฆด ์ผ๋ ์๊ณ ๊ฐ๋จํ๊ฒ ๋๋๋ค๐!!!
์ฌ๊ธฐ์ ํฌ์ธํธ๋ ์ด๋ ๊ฒ ๊ณ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ let format
๋ณ์์ ์ ์ํด์ ๋ง์ง๋ง์ format
๊ฐ์ return ํ ๊ฒ!
const formatDate = dates => {
return dates.map(dates => {
let dateArr = dates.split('-');
return `${dateArr[0]}๋
${dateArr[1]}์ ${dateArr[2]}์ผ`;
});
}
๋ด๊ฐ ์ด ์ฝ๋๋ ๊ฑฐ์ ๋น์ทํ๋ฐ, ํฌ์ธํธ๋ ๋๋ dates.map
๊ฒฐ๊ณผ๊ฐ์ format
์ด๋ผ๋ ๋ณ์์ ํ ๋นํ ๋ค์์ ๋ณ์๋ฅผ return
ํ๊ณ ....
model solution์ dates.map
๊ฒฐ๊ณผ๊ฐ์ ๋ฐ๋ก return
ํ๋ค.
์ ๋ง ์์ ์ฐจ์ด์ธ๋ฐ ๋นจ๋ฆฌ return ํ๋๊น ์ฝ๋๊ฐ ํจ์ฌ ๊ฐ๊ฒฐํ๋ค.
Early Return... ํญ์ ๋ช ์ฌํ์!!
const scores1 = {
์ํ์์ํ๊ณ: 'C',
๋
ผ๋ฆฌ์ ๊ธ์ฐ๊ธฐ: 'B',
๋
์ผ๋ฌธํ์์ดํด: 'B+',
๊ธฐ์ด์ํ: 'D+',
์์ดํํ: 'C+',
์ธ์ง๋ฐ๋ฌ์ฌ๋ฆฌํ: 'A+',
};
const requiredClasses1 = ['์์ดํํ', '๊ธฐ์ด์ํ', '๊ณตํ์ํ', '์ปดํจํฐ๊ณผํ๊ฐ๋ก '];
const getExamResult = (scores, requiredClasses) => {
const result = {};
const numScore = {
'A+': 4.5,
A: 4,
'B+': 3.5,
B: 3,
'C+': 2.5,
C: 2,
'D+': 1.5,
D: 1,
F: 0,
};
for (let i in requiredClasses) {
let required = requiredClasses[i]; // ํ์ ๊ณผ๋ชฉ
result[required] = 0;
}
for (let key in scores) {
let subject = scores[key]; // ๊ณผ๋ชฉ๋ช
result[key] = subject;
}
for (let value in scores) {
let score = scores[value]; // ์ซ์ ์ ์
result[value] = numScore[score];
}
return result;
};
getExamResult(scores1, requiredClasses1);
๋๋ต ํ๋ฃจ์ ๋ ๊ฑธ๋ฆฐ object (3) ๋ฌธ์ ....๐คช
๋์ฒด ๋ช๋ฒ์งธ ํ์ด์ธ์ง...์ฒ์ ํ์ด๋ ์ด๋ ๋์ง...๊ธฐ์ต๋ ์๋๋ค.
(๊ทธ๋๊ทธ๋ ๊ธฐ๋กํ์ด์ผ ํ๋๋ฐใ ใ ์๊พธ ๋งํ๋ ๋ต๋ตํด์ ์ง์ฐ๊ณ ๋ค์ ํด๋ณด๊ณ ์ง์ฐ๊ณ ๋ค์ํด๋ณด๊ณ ๋ฅผ ์ด ์ ์์ด ํ๋๊ฒ ๊ฐ๋ค....)
์ผ๋จ ๋ฌธ์ ์ดํดํ๋๋ฐ๋ง 1์๊ฐ ์ ๋ ๊ฑธ๋ฆฐ ๊ฒ ๊ฐ๊ณ ....ใ ใ ใ ใ ใ ใ
object (3) ๋ฌธ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ค์๋, ์นํ๋์ ๋ฏธ๋ ์ธ์ ์ด ๋ง์ด ๋์์ด ๋๋ค!
๐๐ปโโ๏ธ ์ค์ point
- ๋น ๊ฐ์ฒด
{ }
๋ฅผ ์ ์ธํ๊ณ , ๊ทธ ๊ฐ์ฒด์ ๊ฐ์ ๋ฃ๊ณ ์ถ์ผ๋ฉดobj.name = "solmi";
๋ก ๋ฃ์ ์ ์๋ค.
=> ์ฌ๊ธฐ์name
= key ,"solmi"
= value
- key ๊ฐ, value ๊ฐ์ ๋ณ์๋ก๋ ๋ฃ์ ์ ์๋ค!
const obj = { "A": 4, // ์ด 4๊ฐ์ด ํ์ํ๋ค๋ฉด, } const obj2 = { "hi": "A", // ๊ทผ๋ฐ ์ด obj2 ๋ฅผ ์ด์ฉํด์ผ ํ๋ค๋ฉด } obj[obj2["hi"]]; // 4
- const๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๋น ๊ฐ์ฒด๋ฅผ ํ ๋นํด๋, ๊ฐ์ฒด ์์ ๊ฐ์ด ์ถ๊ฐ๋ก ๋ค์ด์ฌ ์ ์๋ค.
=>const
์ธ๋ฐ ์ด๋ป๊ฒ? โ ๊ฐ์ฒด์ ๊ธฐ๋ณธ ์์ฑ ๋๋ฌธ!!
๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋๊ฒ ์๋, ๊ฐ ์์๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฅดํค๋ reference๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์!
- ๋ฐฐ์ด์ ๊ฐ์ฒด์ key ๊ฐ์ผ๋ก ํ์ฉํ๊ณ ์ถ๋ค๋ฉด?
const obj = {}; const arr = ["a", "b", "c"]; // obj ์์ a=10, b=10, c=10 ์ผ๋ก ๋ฃ๊ณ ์ถ๋ค๋ฉด? for(let i in arr) { // for ๋ฌธ์ผ๋ก ๋๋ฉด์ obj[arr[i]] = 10; // arr[i]์ value ๊ฐ ์ง์ } // obj = { a: 10, b: 10, c: 10 } ์ผ๋ก ์ถ๋ ฅ
๐ ๋น object์ ๊ฐ์ด ์ด๋ป๊ฒ ๋ค์ด๊ฐ๋์ง, ์ด๋ป๊ฒ ๋ฃ์ ์ ์๋์ง ๊ณ ๋ฏผํด๋ณด๊ธฐ
const getExamResult = (scores, requiredClasses) => {
const result = scores;
for(let key in result){
if(result[key] === "A+"){
result[key] = 4.5;
}
else if(result[key] === "A"){
result[key] = 4;
}
else if(result[key] === "B+"){
result[key] = 3.5;
}
else if(result[key] === "B"){
result[key] = 3;
}
else if(result[key] === "C+"){
result[key] = 2.5;
}
else if(result[key] === "C"){
result[key] = 2;
}
else if(result[key] === "D+"){
result[key] = 1.5;
}
else if(result[key] === "D"){
result[key] = 1;
}
else if(result[key] === "F"){
result[key] = 0;
}
}
requiredClasses.forEach((el) => {
if(result[el] === undefined){
result[el] = 0;
}
})
return result
}
model solution 1 ์ ๊ฐ๊ฐ์ key ๊ฐ์ ํ์ ๊ณผ ๋น๊ตํด์, ์ผ์นํ ๊ฒฝ์ฐ ์ซ์ ํ์ ๊ฐ์ return ํ๋ ๋ฐฉ์์ผ๋ก ์์ฑ๋์๋ค.
if ์ else if ์ ํผ๋์ ๋๊ฐ๋ํ์ด์ง๋ง.... ์ด๋ ค์ด ์กฐ๊ฑด์ด ์๋๊ณ ์์ด ํ์ -์ซ์ ํ์ ์ด ์๋ก link ๋์ด ์์ผ๋๊น, ์คํ๋ ค ์ฌ๋ ์ ์ฅ์์ ๋ดค์๋ ๋ ๋์ ์๋ค์ด์ค๋๊ฒ ๊ฐ๊ธฐ๋ ํจ!
const getExamResult = (scores, requiredClasses) => {
const result = {}
const list = {
"A+":4.5,
"A":4,
"B+":3.5,
"B":3,
"C+":2.5,
"C":2,
"D+":1.5,
"D":1,
"F":0
}
for(let key in scores){
result[key] = list[scores[key]];
}
const keys=Object.keys(result)
for(let i in requiredClasses){
if(!keys.includes(requiredClasses[i])){
result[requiredClasses[i]] = 0;
}
}
return result;
}
model solution 2 ๋ ๋ฐ๋ฉด์ ์์๊ฐ๋จ... Object.keys
์ includes
๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์์ ์งง๊ณ ๊ฐ๊ฒฐํ๊ฒ ์์ฑ๋์๋น.....
๋๋ for in ๊ตฌ๋ฌธ 3๋ฒ ๋ฐ๋ณตํ๋๋ ......( ์ฌ์ง์ด ๊ทธ๊ฒ๋ ํ๋ฃจ ๊ฑธ๋ฆผ๐คฎ)
์ฐ์๐ญ ๋๋์ด JavaScript Repl.it ๋!!!!!
๋์์ฃผ๋ ๋ฉํ ๋, ๋๊ธฐ๋ ๋ชจ๋๋ชจ๋ ๊ฐ์ฌํด์คใ
ใ
ใ
ใ
ใ