๐ Math.round
๋ฐ์ฌ๋ฆผ ํจ์ (์์ซ์ ์ด 5 ์ด์์ด๋ฉด ์ฌ๋ฆผ)
console.log(Math.round(2.5)); // 3 console.log(Math.round(2.49)); // 2 console.log(Math.round(2)); // 2 console.log(Math.round(2.82)); // 3
๐ฉ '๋ฉ๋ก ' ์ฑ์์ ์ฌ๋๋ค์ด ๋ ธ๋ ํ์ ์ ๋งค๊ธธ ๋, ๋ณ 0~5๊ฐ ์ค์ ์ ํํด์ผ ํ๋ค๋ฉด, ๋ชจ๋ ์ฌ๋๋ค์ ์ ์๋ฅผ ๋ํด ํ๊ท ์ ๋ด๋ฉด ์์์ ์ด ๋์ฌ ์ ์๋ค(ํ๊ท 3.56)
์ด๋ด ๋Math.round
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ฌ๋ฆผ ํ ๊ฐ์ ๋ผ ์ ์๋ค.
๐ Math.floor
๋ด๋ฆผ ํจ์ (์์ซ์ ์ ๋ค ์์ฐ)
console.log(Math.floor(2.5)); // 2 console.log(Math.floor(2.49)); // 2 console.log(Math.floor(2)); // 2 console.log(Math.floor(2.82)); // 2
๐ Math.ceil
์ฌ๋ฆผ ํจ์ (์์ซ์ ์ ๋ค ์ฌ๋ฆผ)
console.log(Math.ceil(2.5)); // 3 console.log(Math.ceil(2.49)); // 3 console.log(Math.ceil(2)); // 2 console.log(Math.ceil(2.82)); // 3
๐ Math๊ฐ์ฒด ๊ด๋ จ ์ฐธ๊ณ site
https://www.w3schools.com/js/js_math.asp
๐ ๋๋คํจ์
โต Math.random();
let randomNumber = Math.random(); console.log(randomNumber);
โฉ 0.00000000000์์ 0.99999999999 ์ฌ์ด์ ๊ฐ์์ ๋๋ค์๋ฅผ ์ ๊ณต
โต Math.floor();
var randomNumber = Math.random(); console.log(Math.floor(randomNumber*10));
โฉ randomNumber*10 ์ ๊ฐ์
1์ ์๋ฆฌ์
์ ์์ฒญ ๊ธด ์์์๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ex) 9.697009826327621
โMath.random
๊ณผMath.floor
๋ฅผ ํ์ฉํ์ฌ 0~10์ฌ์ด์ ๋๋ค์๋ฅผ ๊ตฌํ ์ ์๋ค
โจโจ ๋ก๋, ์ด๋ฒคํธ ๋น์ฒจ์ ๋ฑ์ ๋ฝ์ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ
โต min <= randomNumber(์ ์) <= max
// ์ต๋๊ฐ, ์ต์๊ฐ ํฌํจ function randomNumber(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; //์ต๋๊ฐ๋ ํฌํจ, ์ต์๊ฐ๋ ํฌํจ }
โต min <= randomNumber(์ ์) < max
// ์ต์๊ฐ ํฌํจ, ์ต๋๊ฐ ๋ฏธํฌํจ function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; //์ต๋๊ฐ์ ์ ์ธ, ์ต์๊ฐ์ ํฌํจ }
/* ์ต์(min), ์ต๋๊ฐ(max)์ ๋ฐ์ ๊ทธ ์ฌ์ด์ ๋๋ค์๋ฅผ returnํ๋ ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์. */ function randomNumber (min, max) { let randomNum = Math.random(); return Math.floor(randomNum*(max-min+1))+min; //์ต๋๊ฐ๋ ํฌํจ, ์ต์๊ฐ๋ ํฌํจ } randomNumber (5,9);
- ๊ฐ์ฒด๋
{ }
(์ค๊ดํธ)๋ก ๊ฐ์ธ์ ธ ์๋ค- property ์ด๋ฆ์ ์ค๋ณต๋ ์ ์๋ค.
property ์ด๋ฆ
๊ณผproperty ๊ฐ
์ฌ์ด์:
(์ฝ๋ก )์ผ๋ก ๊ตฌ๋ถํ๋ค.์ผํ๋ก ๋ถ๋ฆฌ
๋ ๋ชฉ๋ก์ ํํ(property๋ฅผ ์ถ๊ฐํ ๋๋,
(์ผํ)๋ฅผ ๋ถ์ฌ์ค๋ค.)- property ๊ฐ์๋ ์ด๋ type์ด๋ ๊ฐ๋ฅํ๋ค(string, number, array, object, function..)
โฉ ๋ค์ ๋งํ๋ฉด ๊ฐ์ฒด๋์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ๋ค์ ์งํฉ
์ด๋ค.
๐ ๊ฐ์ฒด์ property๊ฐ์ ์ ๊ทผ
๋ฐฉ๋ฒ(1) ๋ง์นจํ(.)
์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
์ ๊ทผํ๋ ค๋ ๊ฐ์ฒด๋ช
์ ์ผ์ชฝ์, ํ๋กํผํฐ๋ช
์ ์ค๋ฅธ์ชฝ์ ์์น.
๋ฐฉ๋ฒ(2) ๋๊ดํธ([])
๋ฅผ ์ฌ์ฉ
์ ๊ทผํ๋ ค๋ ๊ฐ์ฒด๋ช
์ ์ผ์ชฝ์, ํ๋กํผํฐ๋ช
์ ์๋ฐ์ดํ("")์ ํจ๊ป ๋๊ดํธ ์์ ์์ฑ.
โ ๋๊ดํธ ์์๋ ๋ณ์
๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
let plan1 = { name: "Basic" }; // ๋ฐฉ๋ฒ(1) ๋ง์นจํ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๊ฐ์ ์ ๊ทผ console.log(plan1.name); // ๋ฐฉ๋ฒ(2) ๋๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๊ฐ์ ์ ๊ทผ console.log(plan1["name"]); let plan1 = { name: "Basic" }; let propertyName = "name"; // ๋ฐฉ๋ฒ(2) ๋๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๊ฐ์ ์ ๊ทผ(๋ณ์๊ฐ ๋ค์ด๊ฐ ์ ์๊ธฐ๋๋ฌธ) console.log(plan1[propertyName]); let myObj = { property1: "hello", // ์์ฑ๊ฐ์ผ๋ก ์ซ์(Number) property2: [1,2,3,4,5], // ์์ฑ๊ฐ์ผ๋ก ๋ฐฐ์ด(object) property3: { // ์์ฑ๊ฐ์ผ๋ก ํจ์(object) childproperty: "haha" } }; let name = "property"; console.log(myObj[name+"1"]); // =console.log(myObj[property1] = "hello" ์ถ๋ ฅ console.log(myObj[name+"2"]); // =console.log(myObj[property2] = "[1,2,3,4,5]" ์ถ๋ ฅ console.log(myObj[name+"3"]); // =console.log(myObj[property3]) = "{ childproperty: "haha" }" ์ถ๋ ฅ console.log(myObj[name+"3"]["child"+name]); // =console.log(myObj[property3][childproperty]) = "haha" ์ถ๋ ฅ console.log(myObj.property1); // 'hello' console.log(myObj.property2); // [1,2,3,4,5] console.log(myObj.property3); // { childproperty: 'jaja' } console.log(myObj.property3.childproperty); // 'haha'
/* - ์ธ์๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํด์, ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ์ ๋ฆฌํดํฉ๋๋ค. - getData์ ๋ฐฐ์ด ์ธ ๊ฐ๋ฅผ ์ธ์๋ก ๋๊ธธ ๊ฒ์ด๊ณ , ์ด ๋ฐฐ์ด ์ธ ๊ฐ๋ฅผ ์กฐํฉํด์ ํ๋์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค. - 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: ์ด ์ข์์์ */ const salesArr = [["20190401", 34], ["20190402", 23], ["20190403", 29]] const reviewArr = [["20190328", 3], ["20190401", 0], ["20190403", 1]] const likeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]] let salesSum = 0 for (let i=0; i<salesArr.length; i++) { salesSum += salesArr[i][1] } let reviewSum = 0 for (let i=0; i<reviewArr.length; i++) { reviewSum += reviewArr[i][1] } let likeSum = 0 for (let i=0; i<likeArr.length; i++) { likeSum += likeArr[i][1] } const objData = { sumAmount : salesSum, sumReview : reviewSum , sumLike : likeSum }
๐ includes ( )
๋ฐฐ์ด
๋๋ ๋ฌธ์์ด
์ด ํน์ ์์๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธํ๋ ๋ฉ์๋.
โ ๋ฌธ์๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋, includes()
๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถ
๐ fromIndex
arr.includes(valueToFind, fromIndex)
โพ ๋ฌธ์์ด์์ ์ฐพ๊ธฐ ์์ํ๋ ์์น๋ฅผ ๋ํ๋ด๋ ์ธ๋ฑ์ค ๊ฐ. ๊ธฐ๋ณธ๊ฐ์ 0. ์ด๋ค ์ ์๋ผ๋ ๊ฐ๋ฅ.
โพ ๋ง์ฝ fromIndex
๊ฐ์ด ์์ ์ ์์ด๋ฉด ์ ์ฒด ๋ฌธ์์ด์ ์ฐพ๊ฒ ๋๋ค.
โพ fromIndex๊ฐ ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฌ๋ฉด(fromIndex >= str.length) false
๋ฐํ.
โพ valueToFind ๊ฐ์ ์ฐพ์ ์ ์์ผ๋ฉด -1
๋ฐํ
string.includes ( searchString, length ) // searchString: ๊ฒ์ํ ๋ฌธ์์ด๋ก ํ์์์. ๋์๋ฌธ์ ๊ตฌ๋ถํจ // length: ๊ฒ์์ ์์ํ ์์น. ์ ํ์์๋ก์จ ๊ฐ์ด ์์ผ๋ฉด ์ ์ฒด ๋ฌธ์์ด์ ๋์์ผ๋ก ํ๋ค.
'abzcd'.includes('z') // true ์ถ๋ ฅ ('abzcd'๊ฐ 'z'๋ฅผ ํฌํจํ๋์ง ๊ฒ์ฌ) 'abzcd'.includes('z', 2) // true ์ถ๋ ฅ ('zcd'๊ฐ 'z'๋ฅผ ํฌํจํ๋์ง ๊ฒ์ฌ) 'abzcd'.includes('z', 3) // false ์ถ๋ ฅ ('cd'๊ฐ 'z'๋ฅผ ํฌํจํ๋์ง ๊ฒ์ฌ) 'abzcd'.includes('Z', 3 ) // false ์ถ๋ ฅ (๋์๋ถ์๋ฅผ ๊ตฌ๋ถํ๋ฏ๋ก ๋๋ฌธ์'Z'๋ ์๊ธฐ๋๋ฌธ์ false. const arr = [1,2,3]; console.log(arr.includes(2)); // true ์ถ๋ ฅ const pets = ['cat', 'dog', 'bat']; console.log(pets.includes('cat')); // true ์ถ๋ ฅ console.log(pets.includes('at')); // false ์ถ๋ ฅ [1, 2, 3].includes(2); // true (2๊ฐ ์กด์ฌ) [1, 2, 3].includes(4); // false (4๊ฐ ์กด์ฌ) [1, 2, 3].includes(3, 3); // false (์ ์ฒด ๋ฌธ์์ด์ 2๋ฒ์งธ ๊น์ง์ด๋ฏ๋ก 3์ ์ ์ฒด ๋ฌธ์์ด๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ false) [1, 2, 3].includes(3, -1); // true (fromIndex๊ฐ์ด ์์ ์ ์์ด๋ฉด ์ ์ฒด ๋ฌธ์์ด์์ ์ฐพ๋๋ค. 3์ด ์์ผ๋ฏ๋ก true) [1, 2, NaN].includes(NaN); // true
๐ ์กฐ๊ฑด ์ ์ด๋ฌธ์ ์ํ๋ค (cf. if ๋ฌธ
) ๊ทธ๋ฌ๋ if ๋ฌธ์ ์กฐ๊ฑด์์ ๋ถ๋ฑ์(<,<=,>,>=)์ด ์ฌ์ฉ๋์ง๋ง switch๋ฌธ์ ์ค์ง ==๋ง ๋น๊ตํ ์ ์๋ค
.
โ if๋ฌธ์ ์กฐ๊ฑด์์ด true์ผ ๊ฒฝ์ฐ์ block์ด ์คํ๋๋ค๊ณ ํ๋ฉด, switch๋ฌธ์ ๋น๊ตํ ๋ณ์๊ฐ ์ด๋ค ๊ฐ์ ๊ฐ์ง๋์ ๋ฐ๋ผ ์คํ๋ฌธ์ ์ ํ
ํ๋ค.)
switch (๋ณ์) { case ๊ฐ1 : ์คํ๋ฌธ; break; case ๊ฐ2 : ์คํ๋ฌธ; break; default : ์คํ๋ฌธ; }
โ switch๋ฌธ์ ๊ดํธ ์์ (๋ณ์)์ ๊ฐ๊ณผ ๋์ผํ ๊ฐ์ ๊ฐ๋ case๋ก ๊ฐ์ ์คํ๋ฌธ์ ์คํ์ํจ๋ค. (case์คํ ํ break์ด ๋์ด switch๋ฌธ์ด ์ข ๋ฃ๋๋ค)
๋ง์ฝ ๊ดํธ์์ (๋ณ์)์ ๊ฐ๊ณผ ๋์ผํ ๊ฐ์ case๊ฐ ์กด์ฌํ์ง ์๋ค๋ฉด default๋ก ๊ฐ์ ์คํ๋ฌธ์ ์คํ์ํจ๋ค(default๋ ์๋ต ๊ฐ๋ฅ
)
let score = 80; switch (score/10) { case 9 : console.log("A๋ฑ๊ธ ์ ๋๋ค"); break; case 8 : console.log("B๋ฑ๊ธ ์ ๋๋ค"); break; case 7 : console.log("C๋ฑ๊ธ ์ ๋๋ค"); break; case 6 : console.log("D๋ฑ๊ธ ์ ๋๋ค"); break; default : console.log("F๋ฑ๊ธ ์ ๋๋ค"); } // "B๋ฑ๊ธ ์ ๋๋ค" ์ถ๋ ฅ
switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; } // ํ์ฌ ์ค๋ ์์ผ์ ๋ฐ์ํ์ฌ ํด๋นํ๋ case์์ break;
/* class ์์ฑ์ ์ฐ์ตํด๋ณด๊ฒ ์ต๋๋ค. - MyMath๋ผ๋ class๋ฅผ ์์ฑํด์ฃผ์ธ์. - constructor์์๋ ์ซ์ 2๊ฐ๋ฅผ ์ธ์๋ก ๋ฐ์ ํ๋กํผํฐ๋ก ์ ์ฅํฉ๋๋ค. - ์ด 4๊ฐ์ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ์ธ์. - getNumber: ๋ ๊ฐ์ ์ซ์๊ฐ ๋ฌด์์ธ์ง ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋ ex) [1, 2] - add: ๋ ๊ฐ์ ์ซ์๋ฅผ ๋ํ๋ ๋ฉ์๋ - substract: ๋ ๊ฐ์ ์ซ์๋ฅผ ๋นผ๋ ๋ฉ์๋ - multiply: ๋ ๊ฐ์ ์ซ์๋ฅผ ๊ณฑํ๋ ๋ฉ์๋ */ class MyMath { constructor(a,b) { this.getNumber = [a,b], this.add = a+b, this.substract = a-b, this.multiply = a*b } } let result = new MyMath(3,2) console.log(result) // ์ถ๋ ฅ๊ฒฐ๊ณผ : // MyMath { // getNumber: [ 3, 2 ], // add: 5, // substract: 1, // multiply: 6, // __proto__: MyMath { constructor: ฦ MyMath() } // }
๐ arrow function์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ๋๋ call back
ํจ์๋ก ์ฌ์ฉํ ๋์ด๋ค.
โ ์ฝ๋ฐฑํจ์
๋, ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์๋ฅผ ๋ปํจ.
๐ Array.map ( ์ฝ๋ฐฑํจ์ )
map ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ฐ๋ณตํด ์ค๋ค. callbackํจ์์์ returnํ ๊ฐ์ผ๋ก ๊ฐ๊ฐ์ ์์๋ฅผ ์์ ํด์ค๋ค.
map ๋งค์๋์ return๊ฐ์ ์์ ๋ ๊ฐ์ผ๋ก ๋ค์ ์์ฑ๋ ๋ฐฐ์ด์ด๋ค.
const arr = [1,2,3]; arr.map( (e) => { return e * e; } ) // [1, 4, 9] ์ถ๋ ฅ(๊ธฐ์กด arr์ ๋ฐฐ์ด์ ๊ทธ๋๋ก ๋๊ณ , ์๋ก์ด ๋ฐฐ์ด ์ถ๋ ฅ)
โ Array ํ์ ์ ๋ฐ์ดํฐ ์์ ๊ฐฏ์ ๋งํผ ๋ฐ๋ณตํ๋ค(๊ฐ๊ฐ์ ์์๋ฅผ ์ ๋ถ ์๋ก์ด ๋ฐฐ์ด๋ก return)
โ ์์ ํ๊ณ ์ถ์๋๋ก map ๋ฉ์๋ ์์ ๋ก์ง์ ๊ตฌํํ๊ณ returnํด์ฃผ๋ฉด ๋๋ค
๐ Array.forEach ( ์ฝ๋ฐฑํจ์ )
forEach
๋ for
๋์ ์ฌ์ฉํ๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
map๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋, forEachํจ์ ์์ฒด๊ฐ returnํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฅ forEach ํจ์๋ฅผ ํ์ถํ๊ณ ์ถ์ ๋ return์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ทธ๋์ forEach๋ก ์ ๋ฌ๋๋ ์ฝ๋ฐฑํจ์์์๋ returnํ๋ ๊ฒ์ด ์๋ค. ๋จ์ง for๋ฌธ ๋์ ์ฌ์ฉํ๋ ๋ฐ๋ณต method์ผ ๋ฟ์ด๋ค.
let empty = []; let names = ['a', 'ab', 'cbb', 'ada']; names.forEach(el => { if (el.includes('a')) { empty.push(el); } }); console.log(empty) // ์ถ๋ ฅ๊ฒฐ๊ณผ : [ 'a', 'ab', 'ada' ]
์ ๋ ์๋ด๋์ฒ๋ผ ๋งค์ฐ ๊น๋ํ๊ณ ์์ธํ ์ ๋ฆฌ ๋ค์ํ ๋์...