keyword : array
/ index
/ index๋ 0๋ถํฐ
Assignment1
getElement ํจ์์์ arr ๋ณ์๋ฅผ ์ ์ธํ์ต๋๋ค.
arr ๋ณ์๋ ๋ฐฐ์ด์ ํ ๋นํ๊ณ ์, ๋ฐฐ์ด์๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ ์์๊ฐ ๋ค์ด์๋ค์!
๋ฐฐ์ด์ด ๋ด๊ธด arr ๋ณ์์ ์ ๊ทผํ์ฌ getElement ํจ์๊ฐ "array" ๋ผ๋ ๋ฌธ์์ด์ return ํ ์ ์๋๋ก ํด์ฃผ์ธ์.
Assignment2
addFirstAndLast ํจ์ ์์ ์์ฑํด์ฃผ์ธ์.
addFirstAndLast ํจ์์ ์ฃผ์ด์ง ์ธ์ยmyArray
๋ ์ซ์ ๊ฐ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง array ์ ๋๋ค.
addFirstAndLast ํจ์์ ์ฃผ์ด์ง ์ธ์ยmyArray
ย ์ ์ฒซ๋ฒ์งธ element์ ๋ง์ง๋ง element์ ๊ฐ์ ๋ํ ๊ฐ์ ๋ฆฌํดํด์ฃผ์ธ์.
๋ง์ผยmyArray
์ ํ ๊ฐ์ ์์๋ง ์๋ค๋ฉด ํด๋น ์์์ ๊ฐ์ ๋ฆฌํดํด ์ฃผ์๊ณ ์์๊ฐ ์๋ ๋น์ด์๋ array๋ผ๋ฉด 0์ ๋ฆฌํดํด์ฃผ์ธ์.
๋ด๊ฐ ์์ฑํ ์ฝ๋
assignment 1 (Model Solution๊ณผ ๋์ผ) โ
function getElement() {
let arr = [3, [4, ["array", 9], 2+3], [0]];
//arr ๋ฐฐ์ด์์ ๋ค์ด์๋ "array"๋ฌธ์์ด์ returnํ๋๊ฒ์ ์๋์์ ๊ตฌํํ์ธ์.
return arr[1][1][0]; //arr์ 1๋ฒ์งธ ์ธ๋ฑ์ค์์, ๋ค์ ๋ 1๋ฒ์งธ ์ธ๋ฑ์ค์์, 0๋ฒ์งธ ์ธ๋ฑ์ค!
}
assignment 2
function addFirstAndLast(myArray) {
const length = myArray.length;
if(length === 0) { //length๊ฐ 0์ด๋ฉด ๋น์ด์๋ ๋ฐฐ์ด์ด๋๊น 0์ ๋ฆฌํด
return 0;
} else if (length === 1) { //์์๊ฐ ํ๊ฐ๋ผ๋ฉด ํด๋น ๊ฐ ๋ฆฌํด!
return myArray[0];
} else { //๊ทธ๋ฐ์ ๋๋จธ์ง ๋ชจ๋ ๊ฒฝ์ฐ๋ 0๋ฒ์ธ๋ฑ์ค์ ์ ์ผ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๋ํด์ค๋ค!
return myArray[0] + myArray[length-1];
}
}
Model Solution
Assignment 2
function addFirstAndLast(myArray) {
var result;
if (myArray.length > 1) {
result = myArray[0] + myArray[myArray.length - 1];
} else if (myArray.length === 1) {
result = myArray[0];
} else {
result = 0;
}
return result;
}
์ถ๋ ฅ๊ฒฐ๊ณผ
์ฒซ๋ฒ์งธ ๋ฐฐ์ด์์๋ฅผ ๋ด์๋๊ณ ๋น๊ตํ๋ฉด์ ๋ ์์ ๊ฐ์ ์ฌํ ๋น ์ํค๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋๋ฐ๊น์ง ์กฐ๊ธ ์๊ฐ์ด ํ์ํ๋ค.
keyword : for (let i = 0; i < array.length; i++)
findSmallestElement ํจ์๋ฅผ ๊ตฌํํด ์ฃผ์ธ์.
findSmallestElement ์ยarr
ย ์ธ์๋ ์ซ์ ๊ฐ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง array ์ ๋๋ค.
array ์ ๊ฐ๋ค ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ๋ฆฌํดํด์ฃผ์ธ์.
๋ง์ผ array๊ฐ ๋น์ด์์ผ๋ฉด 0์ ๋ฆฌํดํด์ฃผ์ธ์.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ array์ด ์ธ์(input)์ผ๋ก ๋ค์ด์๋ค๋ฉด:`[20, 200, 23, 1, 3, 9]`
1์ด ๋ฆฌํด๋์ด์ผ ํฉ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
function findSmallestElement(arr) {
let min = arr[0];
if (arr.length === 0) {
return 0
} else { //์ด์ฐจํผ ๋น์ด์๋ ๋ฐฐ์ด์ด๋ฉด 0์ ๋ฆฌํดํ๊ณ ํจ์๊ฐ ์ข
๋ฃ๋๋๊น else๋ฅผ ๋ค์ ๋นผ์ฃผ๋๊ฒ ์ข๊ฒ๋ค!
for (let i = 0 ; i < arr.length; i++) {
if (arr[i] < min) {
min= arr[i]
}
}
}
return min
}
ver. 2 โ ์ฐ์ ๋ฐฐ์ด์ด ๋น์ด์์ผ๋ฉด ๋ฐ๋ก 0์ returnํ๊ณ ํจ์๋ฅผ ์ข ๋ฃ์ํค๋ฉด ๋๋๊น ๋จผ์ if ๋ฌธ์ ์ ๊ณ , ๋ค์ ๋ฅผ ์ฒ์์ else ๋ก ์ฒ๋ฆฌํด์ ๊ทธ์์ for ๊ทธ์์ ๋ค์ if ๋ฌธ์ด ๋ค์ด๊ฐ ์ข ๋ณต์กํด๋ณด์ฌ์ .. for๋ฌธ์ ๋ฐ๋ก ๋ค์ ํด์คฌ๋ค. ์๋๊ตฌ??? return์ ํ๋ค๋๊ฒ ํจ์๋ฅผ ์ข ๋ฃ์์ผ์ ๋ค ์ฝ๋๋ค์ด ์คํ์๋๋ค๋๊ฑธ ์๊ฐํ๋ฉฐ ์์ฑํ๋ ๊ฑธ ์ด์ ์์ ์์๊ฑฐ๋ ์,, ๐
function findSmallestElement(arr) {
let min = arr[0]; //solution์์๋ ์ด๊ฒ ์๋์ชฝ์ ์๋๋ฐ, ์ฒซ๋ฒ์งธ if๋ฌธ์์๋ ์ด ๋ณ์๊ฐ ํ์ ์์ผ๋๊น for๋ฌธ ์ ์ ์ ์ธํ๋๊ฒ ์ฝ๋๋ฅผ ํ๋ฆ๋๋ก ๋ณด๊ธฐ ์ข๊ฒ ๋ค.
if (arr.length === 0) {
return 0
}
for (let i = 0; i < arr.length ; i++) {
if (arr[i] < min ){
min = arr[i]
}
}
return min;
}
Model Solution
function findSmallestElement(arr) {
// your code here
if (arr.length === 0) {
return 0;
}
let result = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < result) {
result = arr[i];
}
}
return result ;
}
์ถ๋ ฅ๊ฒฐ๊ณผ
์ฃผ์!! for loop์์ i๊ฐ ์ค์ด๋ค๊ณ ์๋๊ฑด์ง, ์ฆ๊ฐํ๊ณ ์๋๊ฑด์ง๋ฅผ ์ ์๊ฐํ๊ธฐ!
keyword : push
/ unshift
/ pop
/ ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
/ ๋ง์ฝ์ ๊ฑด๋๋ฐ๊ณ ์ถ๊ฐํ๋ค๋ฉด ๊ทธ ์ฌ์ด์ ํ ๋น๋์ง ์์ ์ธ๋ฑ์ค๋ค์ undefined ์ถ๋ ฅ๋๋ค
divideArrayInHalf ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํด์ฃผ์ธ์.
divideArrayInHalf ํจ์์ ์ธ์์ธ array๋ ์ซ์ ๊ฐ์ผ๋ก๋ง ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์ ํํ ์ด 5๊ฐ์ ์์(element)๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
array์ ์์๋ค ์ค 10๊ณผ ๊ฐ๊ฑฐ๋ ์์ ๊ฐ์ element๋ค์ result์ ๋งจ ์์ผ๋ก,
10๋ณด๋ค ํฐ ๊ฐ์ ์์๋ค์ result์ ๋งจ ๋ค๋ก ์ฌ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ ๋ฆฌํดํด์ฃผ์ธ์.
- ์ค์์ฌํญ
์ด๋, ์์๋ array์ ๋งจ ๋ค์ ์์ ๋ถํฐ ๋งจ ์์ ์์๊น์ง ์์ฐจ์ ์ผ๋ก ์ด๋ฃจ์ด์ ์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ธ์ array ๊ฐ์ด ๋ค์๊ณผ ๊ฐ์๋[1, 20, 10, 5, 100]
result ๋ฐฐ์ด์ด ๋ง๋ค์ด ์ง๋ ์์๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ,
[100] [5, 100] [10, 5, 100] [10, 5, 100, 20] [1, 10, 5, 100, 20]
์๋์ ๊ฐ์ result๊ฐ ๋ฆฌํด ๋์ด์ผ ํฉ๋๋ค.
[1, 10, 5, 100, 20]
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
โ index๊ฐ ๋ค์์๋ถํฐ ์ ์ ์์์ง๊ฒ ํ๋๊ฑด ์ฒ์ํด๋ด์, i >= 0
์ด ์กฐ๊ฑด์ ๋ถ๋ถ์ i = 0
ํน์ i < 0
๋ฑ๋ฑ ์ด๋ป๊ฒ ํด์ค์ผํ๋์ง ํท๊ฐ๋ ธ๋ค. ๊ทธ๋์ fail์ด ๋์ค๋ค๊ฐ ๊ฒฐ๊ตญ ํด๊ฒฐํ๋ค!
function divideArrayInHalf(array) {
let result = [];
for (let i = 4 ; i >= 0 ; i--) {
console.log(i);
if (array[i] <= 10 ) {
result.unshift(array[i])
} else {
result.push(array[i]);
}
}
return result;
}
ver. 2 โ ์ฒ์์ ์์ฑํ ๋๋ ๋ฐฐ์ด์ ์์๊ฐ ์ธ์ ๋ 5๊ฐ๋ง์ด๋ผ๊ณ ํด์ ๋ฐ๋ก i=4
๋ก ์์ํด์คฌ๋๋ฐ, ์ด๋ค ๋ฐฐ์ด์ด ๋ค์ด์๋ ์ ์์ ์ธ ์คํ์ด ๋ ์ ์๋๋ก ์์ ํ๋ค.
function divideArrayInHalf(arr) {
let result = [];
for (i = arr.length-1 ; i >= 0 ; i--){
if(arr[i] <= 10){
result.unshift(arr[i]);
} else {
result.push(arr[i]);
}
}
return result;
}
Model Solution
if else
๋จ๊ณ์ฌ์, for loop
๋ฅผ ์ด์ฉํ์ง ์๊ณ ํธ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์๋ ๊ฒ ๊ฐ๋ค.โ ๊ณผ์ : array.pop()
ํ๋ฉด ๋ฐฐ์ด ๋ค์์๋ถํฐ ํ๋์ฉ ์ญ์ ๋๋๋ฐ, ์ด๋ ์ญ์ ๋ ๊ฐ์ ๋ฆฌํดํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ฆฌํด๋ ๊ฐ์ ์๋ก์ด ๋ณ์์ ํ ๋นํด์ฃผ๊ณ ๊ทธ ๊ฐ์ ์กฐ๊ฑด์๋ฐ๋ผ unshift ํด์ฃผ๊ฑฐ๋ push ํด์ค๋ค. ๋ค๋ง ์ง๊ธ ์ฌ๊ธฐ์๋ for loop๋ ์ฌ์ฉํ์ง ์๊ณ ํ๋ ค๊ณ ๊ทธ๋ฅ 5๊ฐ์ ์์ ํ์ ์ด๋๊น! ๊ทธ๋ฅ 5๋ฒ ๋ฐ๋ณตํด์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด์คฌ๋ค!
function divideArrayInHalf(array) {
// for loop ์ด๋ while loop ์ ์ฌ์ฉํ๋ฉด ๋ ํธ๋ฆฌํ์ง๋ง
// ์์ง ์๋ฐฐ์ ์์ผ๋ก for loop ์ ์ฌ์ฉํ์ง ์๊ณ
// ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์.
let result = [];
let element = array.pop(); //array๋ฐฐ์ด์์ ๋ค๋ถํฐ ํ๋์ฉ ๋ฝ์์ ๋ฆฌํด๋ ๊ฑธ ํ ๋น!
if (element <= 10) {
result.unshift(element);
} else {
result.push(element);
}
element = array.pop();
if (element <= 10) {
result.unshift(element);
} else {
result.push(element);
}
element = array.pop();
if (element <= 10) {
result.unshift(element);
} else {
result.push(element);
}
element = array.pop();
if (element <= 10) {
result.unshift(element);
} else {
result.push(element);
}
element = array.pop();
if (element <= 10) {
result.unshift(element);
} else {
result.push(element);
}
//๋ฌด์กฐ๊ฑด ๋ฐฐ์ด์ 5๊ฐ์ ์์๋ก๋ง ๊ตฌ์ฑ๋์ด์๋ค๊ณ ํ์ผ๋๊น, for loop ๋์ ๊ทธ๋ฅ 5๋ฒ ๋ฐ๋ณตํ๋ค!
return result;
}
์ถ๋ ฅ๊ฒฐ๊ณผ
keyword : undefined
null
boolean (true/false)
number
string
object
typeof
Assignment ์๋ค ๐
๊ผญ ๋ค์ ํ์ด๋ณด๊ธฐ!!
keyword : string
/ .toUpperCase()
/ .toLowerCase()
/ string.length
/ ์ซ์ ์์๋ฆฌ๊ฐ 0๋ถํฐ ์์ํ๋ ์ซ์๋ฅผ ํ ๋นํ๋ฉด, ์ปดํจํฐ๋ 0์ ๋นผ๊ณ ํ ๋นํ๋ค. ๊ทธ๋์ 0์ผ๋ก ์์ํ๋ ์ซ์๋ string์ผ๋ก ๋ฐ๊ฟ์ ํ ๋นํด์ผ 0์ด ์ ์ง๋๋ค
indexOf()
โ ํน์ ๋ฌธ์์ด์ด ๋ค์ด์๋์ง ํ์ธ .. ํ์ฉ) ์ฑํ
์ฐฝ ์์ค ์ฐจ๋จ
slice(์๋ฆด ์์์์น, ์๋ฆด ๋์์น)
โ string์ ์๋ผ์ฃผ๋ ํจ์ *๋์ ํฌํจ๋์ง ์๋๋ค
sliceCityFromAddress ํจ์๋ฅผ ๊ตฌํํด ์ฃผ์ธ์.
- sliceCityFromAddress ํจ์๋ address ์ธ์๋ฅผ ๋ฐ์ต๋๋ค.
- address ์ธ์์๋ ์ฃผ์๋ฅผ ๋ํ๋ด๋ string์ด ์ฃผ์ด์ง๋๋ค.
- ์ฃผ์ด์ง ์ฃผ์๊ฐ ์ด๋ ๋์์ธ์ง๋ฅผ ์ฐพ์๋ด์, ํด๋น ์ฃผ์์์ ๋์ ๋ถ๋ถ๋ง ์ญ์ ํ ์๋ก์ด ์ฃผ์๋ฅผ ๋ฆฌํดํด ์ฃผ์ธ์.
- ์ฃผ์๋ ๋ฌด์กฐ๊ฑด "์" ๋ก ๋๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, "์์ธ์".
- "๋" ์ "์" ๋ ์ฃผ์์ ํ๋ฒ ๋ฐ์ ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ฃผ์๊ฐ ์ฃผ์ด์ก๋ค๋ฉด;"๊ฒฝ๊ธฐ๋ ์ฑ๋จ์ ๋ถ๋น๊ตฌ ์ค์๊ณต์๋ก 53"
๋ค์๊ณผ ๊ฐ์ ๊ฐ์ด ๋ฆฌํด๋์ด์ผ ํฉ๋๋ค:
"๊ฒฝ๊ธฐ๋ ๋ถ๋น๊ตฌ ์ค์๊ณต์๋ก 53"
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
โ index๋ 0๋ถํฐ ์์ํ๋๊น length ๊ฐ์ +1 ์ํด์ค๋ ๋๋ค!! (lastChar ๋ถ๋ถ) ๐จ
function sliceCityFromAddress(address) {
let givenAddress = address;
let nameDo = address.indexOf("๋");
let nameCity = address.indexOf("์");
let lastChar = address.length+1;
if (nameDo === -1) {
givenAddress = address.slice(0, nameDo+1) + address.slice(nameCity+2, lastChar);
} else if(nameCity !== -1) {
givenAddress = address.slice(0, nameDo+1) + address.slice(nameCity+1, lastChar);
}
return givenAddress;
}
ver. 2 โ ์ด๋ฒ์๋ ํ ๋น๋ ๊ฐ์ ๊ณ ๋ คํด์ ๋ณ์๋ช
์ ์ง์๋ค. ๊ทธ๋ฆฌ๊ณ slice
๋ฅผ ์ด์ฉํด ์ฒ๋ฆฌํ๋๋ถ๋ถ๋ ๋ฌธ์ ์กฐ๊ฑด์ ํ๋ฆ๋๋ก ์๊ฐํด์ ์์ ํ๋ค.
function sliceCityFromAddress(address) {
let givenAddress = address;
let indexOfSi = address.indexOf("์");
let indexOfDo = address.indexOf("๋");
let afterLastChar = address.length + 1; //์ด์ฐจํผ length๋ ์ธ๋ฑ์ค๋ณด๋ค ํ๋ ๋ ๊ธฐ๋๊น length๋ก ํด์ค๋ index ๋ง์ง๋ง๊ฐ ํฌํจ๋๋ค! ๐
// console.log(address.slice(0,3)); return๊ฐ ์์๋ณด๋ ค๊ณ !
if (indexOfDo === -1) { //๋ง์ฝ ๋๊ฐ ์์ผ๋ฉด (=์์ธ์) .. ์ ๋ค์๋ถํฐ ๋๊น์ง!)
givenAddress = address.slice(indexOfSi + 2, afterLastChar);
} else { //๋ง์ฝ ๋๊ฐ ์์ผ๋ฉด, ๋งจ์๋ถํฐ ๋๊น์ง & ์ ๋ค๋ถํฐ ๋๊น์ง (๋์ด์ฐ๊ธฐ ์๊ฐํ๊ธฐ!)
givenAddress = address.slice(0,indexOfDo+1) + address.slice(indexOfSi+1 , afterLastChar);
}
return givenAddress;
}
Model Solution
์
, ๋
๊ฐ ๋๋๋ ๋ถ๋ถ์ด๋๊น ์กฐ๊ธ ์ง๊ด์ ์ธ ์ด๋ฆ์ผ๋ก ํด์ค ์ ์์๋๋ฐ ์๊ฐ๋ชปํ๋ค. ๋ณ์๋ช
์ด ๋ ํ์คํด์ ธ์ ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด์๋ city_end
์์ 2๊ฐ ์ธ๋ฑ์ค ๋ค,, ์ด๋ ๊ฒ ์ ํด์์ด ๋์ด์ ๊ฐ๋
์ฑ์ด ๋ ์ข์๋ณด์ธ๋ค. length+1
..ใ
ใ
slice
๋ ๋ง์ง๋ง์ ํฌํจ์ ์์ผ์ฃผ์ง ์๋๋ค๊ณ ํด์ ๊ทธ๋ผ ํ๋๋ฅผ ๋ ๋๋ ค์ผ๊ฒ ๋ค๊ณ ํด์ 1์ ๋ํด์คฌ๋๋ฐ,, ์ฌ์ค length๊ฐ ์๋ index๋ณด๋ค 1์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ํด์ค๋ ๋๋๊ฑฐ์๋ค. ์๊ฐํ๊ณ ํ์..๐function sliceCityFromAddress(address) {
// your code here
var province_end = address.indexOf("๋");
var city_end = address.indexOf("์");
console.log("province end " + province_end)
console.log("city end " + city_end)
// ์์ธ์ ๊ฒฝ์ฐ ๋๊ฐ ์์ด ์์ธํน๋ณ์ ๋ถํฐ ์์
if (province_end == -1) {
return address.slice(city_end + 2, address.length);
} else {
return address.slice(0, province_end + 1) + address.slice(city_end + 1, address.length);
}
}
์ถ๋ ฅ๊ฒฐ๊ณผ
keyword : string
โ number
๋ณํ / NaN (Not A Number)
1234 + ""
โ number to String / string - 0
โ string to Number
์ฐ๋ฆฌ๋๋ผ๋ ๊ตญ๋ฏผ์ฐ๊ธ์ ๋ง 65์ธ ๋ถํฐ ๋ฐ์ ์ ์์ต๋๋ค.
nationalPensionRemainingYearCount ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
nationalPensionRemainingYearCount ๋age_string
์ด๋ผ๋ input์ ๋ฐ์ต๋๋ค.
age_string
์ ๋์ด ๊ฐ์ธ๋ฐ stringํ ๊ฐ์ผ๋ก ๋์ด ์์ต๋๋ค.
์ฃผ์ด์ง ๋์ด๋ถํฐ ๋ช๋ ์ด ์ง๋์ผ ๊ตญ๋ฏผ์ฐ๊ธ์ ๋ฐ์ ์ ์๋์ง ๋ฆฌํดํด์ฃผ์ธ์.
๋ฆฌํด ๊ฐ์ผ๋ก๋ ๋ค์ ๋ฌธ์ฅ ์ฒ๋ผ ๋ฆฌํดํด์ผ ํฉ๋๋ค.`"์์ผ๋ก 20๋ ๋จ์ผ์ จ์ต๋๋ค"`
์๋ฅผ ๋ค์ด, age_string ๊ฐ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด:"35"
๋ฆฌํด ๊ฐ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
"์์ผ๋ก 30๋ ๋จ์ผ์ จ์ต๋๋ค"
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
function nationalPensionRemainingYearCount(age_string) {
// Your code here
const age_number = Number(age_string);
const leftYears = 65 - age_number;
return "์์ผ๋ก " + leftYears + "๋
๋จ์ผ์
จ์ต๋๋ค";
}
ver. 2 โ number๋ฅผ string๋ก ๋ณํํด์ค ๋ ์ด๋ฒ์๋ ์ซ์ 0์ ๋นผ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ณํ์์ผฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณ์์ ์ธ์ let
์ผ๋ก ํด์คฌ๋ค.
function nationalPensionRemainingYearCount(age_string) {
let age_number = age_string-0; //ํน์ Number(age_string) ๋ ๊ฐ๋ฅ!
let leftYears = 65 - age_number
return "์์ผ๋ก " + leftYears + "๋
๋จ์ผ์
จ์ต๋๋ค";
}
Model Solution
์ ๋ฌ์ธ์
๋ฅผ ๋ฐ๋ก ์ซ์ํ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด์ ๊ณ์ฐํด๊ฐ์ง๊ณ ํ๋ฒ์ ํ ๋นํ๋ค!function nationalPensionRemainingYearCount(age_string) {
// Your code here
var remaining_years = 65 - Number(age_string);
return "์์ผ๋ก " + remaining_years + "๋
๋จ์ผ์
จ์ต๋๋ค"
}
์ถ๋ ฅ๊ฒฐ๊ณผ
keyword : new Date()
.getFullYear()
.getMonth()
.getDate()
.getDay()
.getHours()
.getMinutes()
.getTime()
โ ๋ ์ง์ ๋ฐ๋ฆฌ์ด ํํ์ ๋ฐํ ( 1970๋
1์ 1์ผ๋ก๋ถํฐ 1564563605026 ๋ฐ๋ฆฌ์ด๊ฐ ์ง๋ฌ๋ค๋ ์๋ฏธ์
๋๋ค. ๋ง์ฝ 10๋ถ ๋ค์ ๋ค์ ์๋ก new Date()๋ฅผ ํธ์ถํ๋ฉด, ์๊ฐ์ด ์กฐ๊ธ ํ๋ ์ผ๋ ์์ 1564563605026 ๋ณด๋ค๋ ํฐ ์ซ์๊ฐ ๋์ฌ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ getTimeํจ์๋ก ๋ฐํ๋ ์ซ์๋ก ๋น๊ต์ฐ์ฐ์ ํตํด ์ธ์ ๊ฐ ๋ ๊ณผ๊ฑฐ์ธ์ง ํ๋จํ ์ ์์ต๋๋ค. ๊ฐ์ด ๋ ์์ผ๋ฉด ๊ณผ๊ฑฐ์
๋๋ค.
ํน์ ๋ ์ง๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ฃผ๋ฉด, ํด๋น ๋ ์ง์ Date๋ฅผ ๋ฐํ ๋ฐ์ ์ ์๋ค
โ let date1 = new Date('December 17, 2019 03:24:00');
โ let date2 = new Date('2019-12-17T03:24:00');
โ let date3 = new Date(2019, 5, 1);
๋ฏธ๊ตญ์ ๋น๋กฏํด ์ ์ธ๊ณ ๋๋ถ๋ถ์ ๋๋ผ๋ค์ด ์์ผ์ ๊ธฐ์ค์ผ๋ก ๋์ด๋ฅผ ๊ณ์ฐ ํฉ๋๋ค. ์ฝ๊ฒ ๋งํด ๋ฏธ๊ตญ์ ํ์ด๋์๋ง์ 0์ด์ด๊ณ ์์ผ์ ์ง๋์ผ ๋น๋ก์ ํ ์ด์ด ๋ฉ๋๋ค. ๋ฐ๋ฉด์ ํ๊ตญ์ ํ์ด๋์๋ง์ 1์ด์ด๊ณ ์ฐ๋๊ฐ ๋ฐ๋ ๋๋ง๋ค ํ ์ด์ฉ ๋จน์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ฏธ๊ตญ์์๋ 1995๋ 9์ 12์ผ์ ํ์ด๋ฌ์ผ๋ฉด 1995๋ 9์ 12์ผ์๋ 0์ด์ด๊ณ
1996๋ 9์ 12์ผ์ด ๋์ผ 1์ด์ด ๋ฉ๋๋ค. ๊ทธ์ ๋นํด ํ๊ตญ์์๋ 1995๋ 9์ 12์ผ์ ํ์ด๋์๋ง์ 1์ด์ด๊ณ 1996๋ 1์ 1์ผ์ 2์ด์ด ๋ฉ๋๋ค.
1์ด ์ฐจ์ด๋ ํฌ๊ฒ ์๊ฐํ๋ ์ฐ๋ฆฌ๋๋ผ ๊ณ ์ ์ ๋ฌธํ์ ๋น๋กฏํ ๊ณ์ฐ๋ฒ์ด ์๋๊ฐ ์ถ์ธกํด ๋ด ๋๋ค. ๋ฏธ๊ตญ์ด๋ ๋ค๋ฅธ ๋๋ผ๊ฐ ์ฌ์ฉํ๋ ๋์ด ๊ณ์ฐ๋ฒ์ ์ฐ๋ฆฌ๋๋ผ์์๋ย ๋ง ๋์ดย ๋ผ๊ณ ํ์ฃ .
์์ ๋งํ ๋ง์ผ๋ก ๊ณ์ฐํ ๋์ด๋ฅผ ๊ตฌํ๋ ํจ์์ธ getWesternAge ํจ์๋ฅผ ๊ตฌํํด ๋ด ์๋ค.
์ด ํจ์๋ birthday ๋ผ๋ ์ธ์๋ฅผ ๋ฐ๊ณ ์ด birthday๋ Date ๊ฐ์ฒด์ ๋๋ค. birthday๋ผ๋ ์ธ์๋ฅผ ๋ฃ์์ ๋, ํ์ฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ง์ผ๋ก ๊ณ์ฐํ ๋์ด๋ฅผ ๋ฆฌํด ํด์ฃผ๋๋ก ๊ตฌํํด ๋ด ์๋ค. birthday๋ string์ด ์๋ Date ๊ฐ์ฒด๋ผ๋ ๊ฑธ ๋ช ์ฌํ์ธ์ :)
์๋ฅผ ๋ค์ด, ์ค๋์ด 2020๋ 7์ 21์ผ์ด๊ณ , birthday ๊ฐ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด:1990-03-21T00:45:06.562Z
- ๋ฆฌํด ๊ฐ์ 30 ์ด ๋์ด์ผ ํฉ๋๋ค.
๐ค๐ป ๋ ํผ์ ์๊พธ ํท๊ฐ๋ฆฐ ๋ถ๋ถ!
โ ์ฐ๋ฆฌ๋๋ผ ๋์ด๊ณ์ฐ์ด ํ๋๊ฒ ์๋๋ผ!!! ์จ์ ํ ์ธ๊ตญ์ธ์ ๋์ด ์
์ฅ์์
ํ์ฌ์ฐ๋ - ํ์ด๋์ฐ๋ - 1์ด
ํ์ฌ์ฐ๋ - ํ์ด๋์ฐ๋
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
โ ์ค๋ช
: ์+์ผ ( 0321
์ฒ๋ผ) ๋ณํํ๋ค. ์๋๋ฉด 1์1์ผ 11 ๋ถํฐ 12์ 31์ผ 1231 ๊ณ์ ์ปค์ง๋๊น!
์กฐ๊ฑด์ ์์๋
currentMonth < birthMonth
= ์์ผ์ด ์์ง๋ฌ์ผ๋ฉด โ ํ์ด ๋นผ์ฃผ๊ธฐ
else
= ์์ผ์ธ ๋ฌ์ธ๋ฐ ์์ผ ์ ์ด๊ฑฐ๋, ํ์ด๊ฑฐ๋! (&์์ผ๋ฌ๋ณด๋ค๋ ์ดํ)
์ค๋ ์์ผ(month&date)์์ ์์ผ์์ผ ๋บ์๋ 0๋ณด๋ค ์์ผ๋ฉด โ ์์ผ์ด ๋ ํฐ๊ฑฐ๋๊น ๋์ค์ด๋ค!
โ ํ์ด ๋นผ์ฃผ๊ธฐ
๊ทธ ๋ฐ๋๋ (์ค๋ ์์ผ์์ ์์ผ๋บ๊ฒ ๊ฐ๊ฑฐ๋! ํฌ๋ฉด) โ ์ค๋์์ผ์ด ๋ ํฌ๋๊น ๊ฐ์ผ๋ฉด ์์ผ ์ง๋ฌ๊ฑฐ๋ ์์ผ๋ ์ด๋ค!
โ ํ์ด ์๋นผ์ค๋ ๋๋ค!
function getWesternAge(birthday) {
const birthYear = birthday.getFullYear();
const birthMonth = birthday.getMonth()+1;
const birthDate = birthday.getDate();
const currentYear = new Date().getFullYear();
const currentMonth = new Date().getMonth()+1;
const currentDate = new Date().getDate();
const birthDay = birthMonth+""+birthDate+"";
const today = currentMonth+""+currentDate+"";
console.log(birthDay);
console.log(today);
if (currentMonth < birthMonth ){ //์์ผ ์์ง๋จ
return currentYear - birthYear - 1;
} else { //์์ผ๋ฌ์ธ๋ฐ ์์ผ ์ ์ด๊ฑฐ๋, ์์ผ๋ ํน์ ์์ผ ์ดํ๋ฌ
if(today - birthDay < 0) { //์์ผ ์์ง๋จ
return currentYear - birthYear - 1;
} else { //์์ผ๋ ์ด๊ฑฐ๋, ์์ผ ์ดํ
return currentYear - birthYear;
}
}
}
ver. 2
โ ์ค๋ช
: ๋จผ์ ๋ณ์ age
๋ฅผ ๋ง๋ค์ด ๋๊ณ , ๊ฐ๊ฐ ์กฐ๊ฑด์์ age
์๋ค๊ฐ ํด๋น ๋์ด๋ฅผ ํ ๋น!
์กฐ๊ฑด์ ์์๋
afterBirthday
๋์ด ํ ๋นbeforeBirthday
๋์ด ํ ๋นbeforeBirthday
๋์ด ํ ๋นafterBirthday
๋์ด ํ ๋นfunction getWesternAge(birthday) {
let age;
const birthYear = birthday.getFullYear();
const birthMonth = birthday.getMonth()+1;
const birthDate = birthday.getDate();
const currentYear = new Date().getFullYear();
const currentMonth = new Date().getMonth()+1;
const currentDate = new Date().getDate();
const beforeBirthday = currentYear - birthYear -1;
const afterBirthday = currentYear - birthYear;
if(birthMonth < currentMonth){ //์์ผ์ด ์ง๋ฌ๋ค
age = afterBirthday;
} else if (birthMonth > currentMonth) { //์์ผ์ด ์์ง๋ฌ๋ค
age = beforeBirthday;
} else { //์์ผ์ธ ๋ฌ์๋
if (birthDate < currentDate) { //๋ ์ง๊ฐ ์ง๋ฌ๋ค
age = afterBirthday;
} else { //๋ ์ง๊ฐ ์์ง๋ฌ๋ค
age = beforeBirthday;
}
}
return age;
}
Model Solution
function getWesternAge(birthday) {
var today = new Date();
var thisYear = 0;
if (today.getMonth() < birthday.getMonth()) {
thisYear = 1;
} else if ((today.getMonth() == birthday.getMonth()) && today.getDate() < birthday.getDate()) {
thisYear = 1;
}
var age = today.getFullYear() - birthday.getFullYear() - thisYear;
return age;
}
console.log(getWesternAge(new Date('1981-07-29T03:24:00')));
console.log(getWesternAge(new Date('1990-07-30T19:45:06.562Z')));
console.log(getWesternAge(new Date('1990-07-31T00:45:06.562Z')));
์ถ๋ ฅ๊ฒฐ๊ณผ
์ค์ค๋ก๋ ๋ ์ฌ๋ฆด ์ ์์์ต๋๋ค...
keyword : Math.round
/ Math.ceil
/ Math.floor
/ Math.random()
์์ผ๋ก ๋๋คํจ์๋ฅผ ์ธ ์ผ์ด ์ ๋ง ๋ง์ต๋๋ค.
๊ทธ๋ฐ๋ฐ Math.random()์ผ๋ก๋ ๋ด๊ฐ ์ํ๋ ๋ฒ์์ ๋๋ค์๋ฅผ ์ป์ ์๊ฐ ์์ต๋๋ค.
ํญ์ 0.0000000000000000์์ 0.9999999999999999 ์ฌ์ด ๊ฐ์์๋ง returnํด์ฃผ๊ธฐ ๋๋ฌธ์ด์ฃ .
์ต์(min), ์ต๋๊ฐ(max)์ ๋ฐ์ ๊ทธ ์ฌ์ด์ ๋๋ค์๋ฅผ returnํ๋ ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
- ํจ์๋ ์งง์ง๋ง, ์ด๋ฒ์๋ ์ํ์ ๋๋ฅผ ์กฐ๊ธ ์จ์ผ ํ๋ assignment์ ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
function getRandomNumber (min, max) {
const random = Math.random() * (max - min) + min;
return random;
}
Model Solution
Math.floor
๋ฅผ ์ด์ฉํด์ ์์์ ์ ๋ฒ๋ ค์ค๋ค. Math.floor(Math.random() * (max + 1 - min)) + min
์ด๋ ๊ฒ 1 ์ ๋ํด์ฃผ๋ฉด, ์กฐ๊ธ ๋ ๊ณ ๋ฅธ ๋ถํฌ์ ๊ฐ์ ์ป์ ์ ์๋ค๊ณ ํ๋ค.function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max + 1 - min)) + min;
}
์ถ๋ ฅ๊ฒฐ๊ณผ
์ฐธ๊ณ
Math.random() * (max - min) + min
์ max-min์ ํ๊ณ , ๋์ค์ ๋ ์ min์ ๋ํด์ผ ํ๋๊ฑด์ง ๊ทธ๋ฅ ๋ด์๋ ์ดํด๊ฐ ๊ฐ์ง ์์์ ์กฐ๊ธ ํ์ด์ ์ ๋ฆฌํด๋ณด๋ ์ดํด๊ฐ ๊ฐ๋ค.
โ ์ด ๊ณผ์ ๋๋ก ๋ค์ ํ๋ฒ 1์ ๋ํ๋ ๊ฑธ ์๊ฐํด๋ณด๋, ์๋ง 1์ ๋ํด์ฃผ๋ฉด ๋ด๊ฐ ์ ๋ฌํด์ค ์ต๋๊ฐ๊น์ง๋ ๊ฒฐ๊ณผ์ ๋์ฌ ์ ์๋ ํ๋ฅ ์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ํด์ฃผ๋ ๊ฒ ๊ฐ๋ค. ์๋๋ฉด ์ด ์ํฉ์์๋ floor๋ก ๋ฒ๋ฆผ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์๋ฅผ๋ค์ด ์ต๋๊ฐ์ 350์ ๋ฃ์์ด๋, 351์ ๋์ง ์๋ ์์์๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ซ์์ธ 350.426369380 ๋ฑ๋ฑ ์ด ๋์ค๊ฒ ๋๋ฏ๋ก ๋ฒ๋ฆผ์ ํด์ฃผ๋ฉด 350์ด ๋์ฌ ์ ์๋ ํ๋ฅ ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ๊ฒ์์ ํด๋ณด๋ค๊ฐ ์ฌ๊ธฐ ์์ ๋ฐ๊ฒฌํ ๊ธ์ธ๋ฐ ๊ณต๊ฐ์ด ๊ฐ์ ์ ์ฅํ๊ณ ์ถ์๋ค. ๊ทธ๋ฐ๋ฐ ์ ๋ถ์ ์ฌ์ง์ด guilty ๊น์งโ๏ธ
๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ๋ก ์ด๊ฒ๋ ๋ฉ๋ชจํด๋๊ณ ์ถ๋ค.
keyword : array
/ index
/ index๋ 0๋ถํฐ
getData๋ ์ธ ๊ฐ์ ๋ฐฐ์ด์ ์ธ์๋ก ๋ฐ๋ ํจ์์ ๋๋ค.
- salesArr: ๋ ์ง๋ณ ํ๋งค๋
- ex) [["20190401", 34],ย ["20190402", 23],ย ["20190403", 29]]
- reviewArr: ๋ ์ง๋ณ ๋ฆฌ๋ทฐ์
- ex) [["20190328", 3],ย ["20190401", 0],ย ["20190403", 1]]
- likeArr: ๋ ์ง๋ณ ์ข์์์
- ex) [["20190328", 98],ย ["20190401", 102],ย ["20190403", 125]]
์์ ์์๋ก ๋ณด์ฌ๋๋ฆฐ ๋ฐฐ์ด์ ๋จ์ง ์์ผ๋ฟ,
๋ ์ง๋ณ ํ๋งค๋ ๋ฐฐ์ด์ 365์ผ์น ์์๊ฐ ๋ค์ด์์ ์๋ ์์ต๋๋ค.
๋ค์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ return ํด์ฃผ์ธ์.
objData๊ฐ ๊ฐ๊ณ ์๋ property๋ 3๊ฐ ์ ๋๋ค.- sumAmount: ์ด ํ๋งค๋
- sumReview: ์ด ๋ฆฌ๋ทฐ๊ฐ์
- sumLike: ์ด ์ข์์์
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
function getData(salesArr,reviewArr,likeArr){
let amount = 0;
let review = 0;
let like = 0;
for (let i = 0 ; i < salesArr.length; i++){
const value = salesArr[i][1];
amount = amount + value;
}
for (let i = 0 ; i < reviewArr.length; i++){
const value = reviewArr[i][1];
review = review + value;
}
for (let i = 0 ; i < likeArr.length; i++){
const value = likeArr[i][1];
like = like + value;
}
let objData = {};
objData.sumAmount = amount;
objData.sumReview = review;
objData.sumLike = like;
return objData;
}
ver.2
(๋ณต์ตํ๋ฉด์ ๋ค์ ์์ฑํด ๋ณธ ์ฝ๋) โ +=
๋ฅผ ์ฌ์ฉํ ๊ฒ ๋นผ๊ณ ๋ ๋ ๋๊ฐ์ด ํ์๋ค.
function getData(salesArr,reviewArr, likeArr){
let sumAmount = 0;
let sumReview = 0;
let sumLike = 0;
for (let i = 0; i < salesArr.length; i++) {
let amount = salesArr[i][1];
sumAmount += amount;
}
for (let i = 0; i < reviewArr.length; i++) {
let review = reviewArr[i][1];
sumReview += review;
}
for (let i = 0; i < likeArr.length; i++) {
let like = likeArr[i][1];
sumLike += like;
}
let objData = {};
objData.sumAmount = sumAmount;
objData.sumReview = sumReview;
objData.sumLike = sumLike;
return objData;
}
Model Solution
Assignment 2
function getData(salesArr, reviewArr, likeArr) {
let sumAmount = 0;
let sumReview = 0;
let sumLike = 0;
for (let i = 0; i < salesArr.length; i++) {
let amount = salesArr[i][1];
sumAmount = sumAmount + amount;
}
for (let i = 0; i < reviewArr.length; i++) {
let review = reviewArr[i][1];
sumReview += review;
}
for (let i = 0; i < likeArr.length; i++) {
let like = likeArr[i][1];
sumLike += like;
}
return { //์ค๋ธ์ ํธ ํํ๋ก ๋ฆฌํด!
sumAmount: sumAmount,
sumReview: sumReview,
sumLike: sumLike
};
}
์ถ๋ ฅ๊ฒฐ๊ณผ
keyword : method
/ state
/ Constructor
/ instance
class ์์ฑ์ ์ฐ์ตํด๋ณด๊ฒ ์ต๋๋ค.
MyMath๋ผ๋ class๋ฅผ ์์ฑํด์ฃผ์ธ์.
constructor์์๋ ์ซ์ 2๊ฐ๋ฅผ ์ธ์๋ก ๋ฐ์ ํ๋กํผํฐ๋ก ์ ์ฅํฉ๋๋ค.
์ด 4๊ฐ์ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
- getNumber: ๋ ๊ฐ์ ์ซ์๊ฐ ๋ฌด์์ธ์ง ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋ ex)ย [1, 2]
- add: ๋ ๊ฐ์ ์ซ์๋ฅผ ๋ํ๋ ๋ฉ์๋
- substract: ๋ ๊ฐ์ ์ซ์๋ฅผ ๋นผ๋ ๋ฉ์๋
- multiply: ๋ ๊ฐ์ ์ซ์๋ฅผ ๊ณฑํ๋ ๋ฉ์๋
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
class MyMath {
constructor(num1, num2) {
this.num1 = num1;
this.num2 = num2;
}
getNumber() {
return [this.num1, this.num2];
}
add(){
return this.num1 + this.num2;
}
substract(){
return this.num1 - this.num2;
}
multiply(){
return this.num1 * this.num2;
}
}
ver.2 (Model Solution๊ณผ ๋์ผ) โ
(๋ณต์ตํ๋ฉด์ ๋ค์ ์์ฑํด ๋ณธ ์ฝ๋) โ num1,num2
๋ฅผ a,b
๋ก ๋ณ๊ฒฝํ ๊ฒ ๋นผ๊ณ ๋ ๋๊ฐ๋ค.
class MyMath {
constructor(a, b) {
this.num1 = a;
this num2 = b;
}
getNumber() {
return [this.num1, this.num2];
}
add() {
return this.num1 + this.num2;
}
substrct() {
return this.num1 - this.num2;
}
multiply() {
return this.num1 * this.num2;
}
}
์ถ๋ ฅ๊ฒฐ๊ณผ
์๋์ ๊ฐ์ฒด์์ '์๋ฌ๋'๋ผ๋ ๊ฐ์ด ์ถ๋ ฅ ๋ ์ ์๋๋ก getAnswerํจ์์์ return ํด ์ฃผ์ธ์.
let myProfile = { name: '๊น๊ฐ๋ฐ', address: { email: 'geabal@gmail.com', home: '์์ํฌ' }, 'my favorite': { food: [{ name: '์๋ฌ๋', price: 3500 }, { name: '์ผ๊ฒน์ด', price: 15000 }], hobby: ['์ถ๊ตฌ'] } }
๋ด๊ฐ ์์ฑํ ์ฝ๋ (Model Solution๊ณผ ๋์ผ) โ
function getAnswer() {
return myProfile["my favorite"].food[0].name; //์๋ฌ๋
}
์ถ๋ ฅ๊ฒฐ๊ณผ
keyword : Array.map()
/ Array.forEach()
Assignment1
๋ ๋ฌธ์ ๋ชจ๋ map ๋ฉ์๋์ arrow function์ ์ฌ์ฉํด์ฃผ์ธ์.
1. moreThan100 ํจ์์ ์ซ์๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ ์ธ์๋ก ๋๊ฒจ๋๋ฆฝ๋๋ค.
100 ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด, true๋ฅผ
100 ๋ณด๋ค ์์ผ๋ฉด false๋ก ์์๋ฅผ ๋ณ๊ฒฝํ์ฌ
์๋ก์ด ๋ฐฐ์ด์ returnํด์ฃผ์ธ์.
์๋ฅผ ๋ค์ดnums(input)์
[100, 9, 30, 7]
return์
[true, false, false, false]
Assignment 1
๋ด๊ฐ ์์ฑํ ์ฝ๋
const moreThan100 = nums => {
const boolean = nums.map(num => {
if (num >= 100){
return true;
} else {
return false;
}
})
return boolean;
}
์ถ๋ ฅ๊ฒฐ๊ณผ
Assignment2
1. formatDate ํจ์์ ๋ ์ง๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ ์ ๋ฌ๋๋ฆฝ๋๋ค.
๋ ์ง์ data type์ string์ด๋ฉฐ,
๋ณด๋ด๋ ๋ ์ง ํ์ ์ 'YYYY-MM-DD' ์ ๋๋ค.
ํด๋น ๋ ์ง์ ํ์์ 'YYYY๋ MM์ DD์ผ' ๋ก ๋ฐ๊ฟ์
์๋ก์ด ๋ฐฐ์ด์ return ํด์ฃผ์ธ์.
์๋ฅผ ๋ค์ดdates(input)์
['2019-03-21', '2019-04-21', '2019-05-21']
return์
['2019๋ 03์ 21์ผ', '2019๋ 04์ 21์ผ', '2019๋ 05์ 21์ผ']
Assignment 2
๋ด๊ฐ ์์ฑํ ์ฝ๋
const formatDate = dates => {
const formatDates = dates.map(date => {
return `${date[0]}${date[1]}${date[2]}${date[3]}๋
${date[5]}${date[6]}์ ${date[8]}${date[9]}์ผ`
})
return formatDates;
}
Model Solution
split
method ๋ฅผ ์ด์ฉํด์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ ๊ฐ๊ฐ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ๋ฆฌํด๊ฐ์ ๋ง๋ค์๋ค.const formatDate = dates => {
return dates.map(dates => {
let dateArr = dates.split('-');
return `${dateArr[0]}๋
${dateArr[1]}์ ${dateArr[2]}์ผ`;
});
}
์ถ๋ ฅ๊ฒฐ๊ณผ
keyword : Object.keys()
/ for key in
getExamResult ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
์ธ์ scores ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด์ ๋๋ค.
๊ฐ์ฒด์ ์์์ ๊ฐฏ์ ๋ฐ ํค์ ์ด๋ฆ๋ค์ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๊ฐ์ฒด์ ๊ฐ์ ๋ค์ 9๊ฐ์ง ๋ฌธ์์ด ์ค์์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
('A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F'){ '์ํ์์ํ๊ณ': 'C', '๋ ผ๋ฆฌ์ ๊ธ์ฐ๊ธฐ': 'B', '๋ ์ผ๋ฌธํ์์ดํด': 'B+', '๊ธฐ์ด์ํ': 'D+', '์์ดํํ': 'C+', '์ธ์ง๋ฐ๋ฌ์ฌ๋ฆฌํ': 'A+', }
์ธ์ requiredClasses ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์์ด๋ก ๋ ๋ฐฐ์ด์ ๋๋ค.['์์ดํํ', '๊ธฐ์ด์ํ', '๊ณตํ์ํ', '์ปดํจํฐ๊ณผํ๊ฐ๋ก ']
๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋๋ก ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์
1. scores ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํค๋ค์ ์๋ก์ด ๊ฐ์ฒด์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
๋จ, ๊ทธ ๊ฐ๋ค์ ๋ค์ ์๋ฆฌ์ ๋ฐ๋ผ ์ซ์๋ก ๋ฐ๋์ด ํ ๋น๋์ด์ผ ํฉ๋๋ค.A+ => 4.5 A => 4 B+ => 3.5 B => 3 C+ => 2.5 C => 2 D+ => 1.5 D => 1 F => 0
- requiredClass ๋ฐฐ์ด์ ์์๋ก๋ ์กด์ฌํ์ง๋ง, scores์ ํค๋ก๋ ์กด์ฌํ์ง ์๋ ํญ๋ชฉ์ด ์๋ค๋ฉด, ํด๋น ์์๋ ์๋ก์ด ๊ฐ์ฒด์ ํค๊ฐ ๋๊ณ , ๊ฐ์ผ๋ก 0์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
์์์ ์์๋ก ๋ฌ์ฌ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ด ์ธ์๋ก ๋ค์ด์๋ค๋ฉด,
๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด๊ณผ ๋ฆฌํด๋ฉ๋๋ค. (์์๊ฐ ์์๋ ๋ค๋ฅผ์ ์์ง๋ง, ์ฑ์ ์ ๋ฌด๊ดํฉ๋๋ค.){ '์ํ์์ํ๊ณ': 2, '๋ ผ๋ฆฌ์ ๊ธ์ฐ๊ธฐ': 3, '๋ ์ผ๋ฌธํ์์ดํด': 3.5, '๊ธฐ์ด์ํ': 1.5, '์์ดํํ': 2.5, '์ธ์ง๋ฐ๋ฌ์ฌ๋ฆฌํ': 4.5, '๊ณตํ์ํ': 0, '์ปดํจํฐ๊ณผํ๊ฐ๋ก ': 0, }
๋ด๊ฐ ์์ฑํ ์ฝ๋
ver.1
โ ์ฒ์์๋ ์ด๋ป๊ฒ ์ ๊ทผํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ๊ทธ๋ฅ ๋ฌธ์ ๋ฅผ ์ฝ๋ ์์๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋จผ์ ๊ฐ์ฒด์ key์ value๋ฅผ ๊ฐ๊ฐ์ ๋ฐฐ์ด๋ก ๋ถ๋ฆฌํด ๋ด์๊ณ , ์ํ๋ฒณ์ ์๋ฐฐ์ด์ ๋ค์ํ๋ฒ ์ซ์์ ์์ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์คฌ๋ค. ๊ทธ ํ ๊ฐ๊ฐ์ ๋ฐฐ์ด๋ค์ ๊ฐ์ ์ธ๋ฑ์ค๋ผ๋ฆฌ ์ ๊ฐ์ฒด์ key์ value๋ก ์ถ๊ฐ์์ผฐ๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ถ๋ถ์์ ๋ฐฐ์ด์ ์์๊ฐ ๋ณด์ฅ๋์ง๋ง, ๊ฐ์ฒด๋ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋๋ค.
๋ผ๋ ๊ฒ ๋๋ฌธ์ ์ด๋ ๊ฒ ํด์ค๋ ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง,, ์ผ๋จ ์์ฑ์ ์์ผ๋ณด๊ณ ์คํํด๋ณด๋ ค๊ณ ๊ณ์ ์์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ํ๋ฒ requiredClass ๋ฐฐ์ด์ ์๋ ์์๋ค์ valuesArr
(๊ณผ๋ชฉ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด) ๊ฐ ํฌํจํ๊ณ ์๋์ง ์ฒดํฌํ๋ฉด์ ์๋ค๋ฉด ๊ฐ์ฒด์ ๋ ์ถ๊ฐ์์ผ์คฌ๋ค. ๊ทธ๋ฆฌ๊ณ ํ
์คํธ๋ฅผ ํด๋ดค๋๋ฐ ๊ฒฐ๊ณผ๊ฐ pass๊ฐ ๋์์ ์ด ์ฝ๋๋ฅผ ์ ์ถํ๋ค.
const getExamResult =(scores, requiredClasses) => {
const result = {}
const valuesArr = Object.values(scores);
const translated = valuesArr.map(score => {
switch(score) {
case "A+" :
return 4.5;
break;
case "A" :
return 4;
break;
case "B+" :
return 3.5;
break;
case "B" :
return 3;
break;
case "C+" :
return 2.5;
break;
case "C" :
return 2;
break;
case "D+" :
return 1.5;
break;
case "D" :
return 1;
break;
case "F" :
return 0;
break;
}
});
let title = [];
for(let key in scores) {
title.push(key);
}
for (let i = 0; i < title.length; i++) {
const subjectName = title[i];
const score = translated[i];
result[subjectName] = score;
}
for (let i = 0; i < requiredClasses.length; i++){
const required = requiredClasses[i];
if(!title.includes(required)){
result[required] = 0;
}
}
return result
}
ver.2
โ ์ฒ์ ์ ์ถํ๋ ๋ฐฉ๋ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ด ์๋๊ฒ ๊ฐ์์ ๋๋ฒ์งธ๋ก ํ์ด๋ณผ ๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์๋ํ๋ค. for key in
์ ์ด์ฉํด์ ๋ฐฐ์ด์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฒ์๋ ์ํ๋ฒณ์ ์๋ฅผ ์ซ์์ ์๋ก ๋ณํ์์ผฐ๋ค. ์ด ๋ถ๋ถ์ solution code๋ ๋๊ฐ๋ค!! ๐๐ป
๊ทธ๋ฆฌ๊ณ requiredClass ๋ฅผ ๋น๊ตํ๋๊ฒ์ ๋ฐฐ์ด์ filter method๋ฅผ ์ด์ฉํด์
requiredClass์ ์์๊ฐ result๊ฐ์ฒด์ key๋ก ์์ผ๋ฉด undefined๊ฐ ๋์ค๊ธฐ๋๋ฌธ์ ์ด๊ฑด false ์ด๋ฏ๋ก !result[item]
ํด์ ํฌํจํ์ง ์๋ ๊ณผ๋ชฉ์ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ result ๊ฐ์ฒด์ ์๋ก์ด key๋ก ์ถ๊ฐ์์ผฐ๋ค.
function getExamResult(scores,requiredClasses) {
let result = {};
let scoreObj = {
"A" : 4.5,
"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) {
const changed = scoreObj[scores[[key]]];
result[key] = changed;
}
const filter = requiredClasses.filter(item => !result[item]);
for (let i = 0; i < filter.length; i++) {
let subject = filter[i];
result[subject] = 0;
}
return result;
}
Model Solution
ver.1
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
}
ver.2
Assignment - ๋ฐฉ๋ฒ 2.
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;
}
์ถ๋ ฅ๊ฒฐ๊ณผ