์๋ฐ์คํฌ๋ฆฝํธ๋ prototype์ด๋ผ๋ ๊ฐ๋ ์ด ์๋ค. ์ฝ๊ฒ ๋งํ๋ฉด ๊ธฐ์กด ๊ฐ์ฒด์ ์ํ์ธ๋ฐ, ์ด prototype ๊ฐ์ฒด์ ๋ด์ฅ๋ ๋ค์ํ ๋ฉ์๋๋ค์ ํ์๋ ๊ฐ์ฒด์์ ์ฌ์ฉํ ์ ์๋ค.
๋ชจ๋ ๋ฉ์๋๋ค์ ์ธ์ฐ๊ธฐ๋ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
const str = "Hello World!!";
console.log(str.slice(0, 6));
console.log(str.slice(0, -2));
console.log(str);
Hello
Hello World
Hello World!!
slice๋ ๋ฌธ์์ ์ผ๋ถ๋ถ์ ์๋ผ returnํ๋ ๋ฉ์๋์ด๋ค. ์ธ์๋ก start, end ์ธ๋ฑ์ค๋ฅผ ๋ฐ์ผ๋ฉฐ end๋ก ๋ฐ์ ์ธ๋ฑ์ค๋ ํฌํจํ์ง ์๋๋ค.
end ๋ฐ๋ก ์ง์ index๊น์ง๋ง ํฌํจํ๊ธฐ ๋๋ฌธ์ ํผ๋ํ์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ค.
์ธ๋ฑ์ค ๋ฒํธ๋ก ์์ ๊ฐ๋ ๊ฐ๋ฅํ๋ฐ ๊ฐ์ฅ ๋ ์ธ๋ฑ์ค๋ถํฐ ๋ด๋ ค๊ฐ๋ ํ์์ด๋ค.
const str = "Hello World!!";
console.log(str.indexOf("H"));
console.log(str.indexOf("World"));
console.log(str.indexOf("Good"));
console.log(str.indexOf("o", 6));
console.log(str);
0
6
-1
7
Hello World!!
indexOf๋ ์ด๋ฆ ๊ทธ๋๋ก ํด๋น String์ ํฌํจํ ๊ฒฝ์ฐ ์ฒ์์ผ๋ก ์ฐพ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด -1์ ๋ฐํํ๋ค.
๋ ๋ฒ์งธ ์ธ์๋ก position ๊ฐ์ ๋ฃ์ ์ ์๋๋ฐ, position ์์น๋ถํฐ ํ์ํ๋ผ๋ ์๋ฏธ๊ฐ ๋๋ค.
replace๋ ์ง๊ด์ ์ด๋ค. ํน์ ํจํด์ ๋ฌธ์์ด์ ์ ๋ ฅํ๋ฉด ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ๋ก ๋ง๋๋ ๋ฌธ์์ด์ ๋ฐ์ ์ธ์๋ก ๊ต์ฒดํ๋ค.
const str = "Hello World!!, Hello!!";
console.log(str.replace(/Hello/g, "Goodbye"));
console.log(str.replace("Hello", "Goodbye"));
console.log(str);
Goodbye World!!, Goodbye!!
Goodbye World!!, Hello!!
Hello World!!, Hello!!
ํ๊ฒ ๋ฌธ์์ด์ ์ ๊ทํํ์์ ๋ฃ์ด์ ํ์ฉํ๋ฉด ์ฒซ ๋ฒ์งธ๋ก ๋ง๋๋ ๋ฌธ์์ด ๋ฟ๋ง ์๋๋ผ ๋งค์นญ๋๋ ๋ชจ๋ ๋ฌธ์์ด์ ๊ต์ฒดํ ์ ์๋ค.
const str = "abcdefgh";
console.log(str.split(""));
console.log(str.split("e"));
console.log(str.split("e", 1));
console.log(str);
[
'a', 'b', 'c',
'd', 'e', 'f',
'g', 'h'
]
[ 'abcd', 'fgh' ]
[ 'abcd' ]
abcdefgh
split์ ๋งค์ฐ ์ ์ฉํ๋ค. ์ฒซ ๋ฒ์งธ ์ธ์๋ก ๋ค์ด์จ seperator๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ์ชผ๊ฐ ๋ค.
split์ ์ด์ฉํ๋ฉด ๋ฐฐ์ด๋ก ๋ณํ ๋ฌธ์์ด ๋ฐ์ดํฐ์ ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ ์ฉํ ์ ์๋ค๋ ํฐ ์ฅ์ ์ด ์๋ค.
๋ ๋ฒ์งธ ์ธ์๋ก limit๋ฅผ ๋ฐ๋๋ฐ, ์ด ๊ฒฝ์ฐ ํด๋น ์ ๋งํผ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ค.
const fNum = 123.3;
const iNum = 123;
console.log(Number.isInteger(fNum));
console.log(Number.isInteger(iNum));
false
true
์ธ์๋ก ๋ค์ด์จ ์ซ์๊ฐ ์ ์์ธ์ง ํ๋ณํ๋ ๋ฉ์๋์ด๋ค. ๋ค๋ง ๋ฉ์๋์ ํธ์ถ์ Number ๋ํผ ๊ฐ์ฒด์ธ ๊ฒ์ ์ฃผ์ํด์ผํ๋ค.
const fNum = 123.3;
const iNum = 123;
console.log(fNum.toString());
console.log(typeof fNum.toString());
console.log(iNum.toString(2));
123.3
string
1111011
toString ๋ฉ์๋๋ ํด๋น number๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
์ด๋ ์ธ์๋ก radix๋ฅผ ์ ๋ฌํ ์ ์๋๋ฐ, ์์ ๊ฒฐ๊ณผ์ฒ๋ผ 2๋ฅผ ์ ๋ฌํ๋ฉด ์ ์๊ฐ ์ด์ง๋ฒ์ผ๋ก ๋ณํ๋ string์ด ๋ฐํ๋๋ค.
const num = "123";
const fNum = "123.456";
console.log(Number.parseInt(num));
console.log(Number.parseInt(fNum));
console.log(Number.parseFloat(fNum));
console.log(parseInt(fNum));
console.log(parseFloat(fNum), "\n");
console.log(typeof Number.parseInt(num));
console.log(typeof Number.parseInt(fNum));
console.log(typeof Number.parseFloat(fNum));
console.log(typeof parseInt(fNum));
console.log(typeof parseFloat(fNum));
123
123
123.456
123
123.456
number
number
number
number
number
parseInt์ parseFloat์ ์ธ์๋ก ๋ฐ์ string์ number๋ก ๋ณํํด์ค๋ค. ๋ค๋ง parseInt๋ ์์์ ์๋ ์ซ์๋ฅผ ๋ชจ๋ ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ํ๋ค.
๋ ๋ฉ์๋๋ Number ๊ฐ์ฒด๊ฐ ํธ์ถํด๋ ๋๊ณ ๋ฐ๋ก ํธ์ถ์ ์์ด ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋ค.
const num = -123;
const fNum = 123.456;
const arr = [1, 2, 3, 4, 5];
console.log(Math.abs(num));
console.log(Math.max(...arr));
console.log(Math.min(...arr));
console.log(Math.ceil(fNum));
console.log(Math.floor(fNum));
console.log(Math.round(fNum));
console.log(Math.random());
123
5
1
124
123
123
0.26679628239106457
Math ๊ฐ์ฒด๋ ์ํ๊ณผ ๊ด๋ จ๋ ๋ฉ์๋๋ค์ ๋ด๋นํ๋ค. ์ ๋๊ฐ, ์ต๋, ์ต์, ์ฌ๋ฆผ, ๋ด๋ฆผ, ๋ฐ์ฌ๋ฆผ, ๋๋ค ๋ฑ ๋ค์ํ ๋ฉ์๋๋ค์ ์ ๊ณตํ๋ค.
์ด ์ธ์๋ sqrt, log ๋ฑ ์ํ์ ์ธ ๋ฉ์๋๋ค์ ์ฐพ๋๋ค๋ฉด Math ๊ฐ์ฒด๋ฅผ ์ดํด๋ณด๋ ๊ฒ ์ข๋ค.
๋ฐฐ์ด ๊ด๋ จ ๋ฉ์๋๋ค์ ์ ๋ง ๋ง์ด ์ฐ์ธ๋ค. ๋ค์ํ ๋ฉ์๋๋ค์ด ์ฌ๋ฌ ๊ตฐ๋ฐ์์ ์ฐ์ด๋ ๋งํผ ์๋ฌ๋ ํ์๊ฐ ์๋ค.
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr.find((item) => item > 5));
console.log(arr.find((item) => item > 10));
console.log(arr.findIndex((item) => item > 5));
console.log(arr.findIndex((item) => item > 10));
console.log(arr.includes(1));
console.log(arr.includes(10));
6
undefined
5
-1
true
false
Array๋ ๋ค์ํ find ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. find์ findIndex ๋ชจ๋ ํ๋ณ์ ์ํ callback์ ์ธ์๋ก ๋ฐ๋๋ฐ, ์์ ๊ฒฐ๊ณผ์ฒ๋ผ ์ญํ ์ ๋น์ทํ์ง๋ง ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
find๋ ์กฐ๊ฑด์ ๋ถํฉํ๋ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๊ณ ์กฐ๊ฑด์ ๋ชจ๋ ๋ถํฉํ์ง ์์ผ๋ฉด undefined, findIndex๋ ์ธ๋ฑ์ค์ -1์ ๋ฐํํ๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
includes ๋ฉ์๋๋ ๋ฐฐ์ด์ด ์ธ์๋ฅผ ํฌํจํ๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr.slice(0, 4));
console.log(arr.slice(10, 15));
console.log(arr.map((data) => data * 2));
console.log(arr.filter((data) => data >= 5));
console.log(arr.concat([1,2,3,4]));
[ 1, 2, 3, 4 ]
[]
[
2, 4, 6, 8, 10,
12, 14, 16, 18
]
[ 5, 6, 7, 8, 9 ]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4]
์์ ๋ฉ์๋๋ค์ ๋ฐฐ์ด ์๋ณธ์ ๋ฐ๊พธ์ง ์๋๋ค. ๋์ ํด๋น ๋ฐฐ์ด์ ์์๋ค์ ์กฐ์ํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
slice๋ String ๊ฐ์ฒด์ slice์ ์ ์ฌํ๋ค. ์ธ๋ฑ์ค ๋ฒ์๊ฐ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋์ด์๋ฉด ๋น ๋ฐฐ์ด์ ๋ฐํํ๋ค.
map๊ณผ filter๋ ์ฌ์ฉ๋ฐฉ๋ฒ์ด ๋น์ทํ๋ค.
map์ ์์๋ฅผ ํ๋ํ๋ ์ํํ๋ฉฐ ํด๋น ์์์ ํน์ํ ์กฐ์์ ๊ฐํ๊ณ , filter๋ ์๋ณธ ๋ฐฐ์ด์ ์์๋ค ์ค ์ฃผ์ด์ง ํ๋ณ callback์ ๋ถํฉํ๋ ๊ฒ๋ค๋ง ์ถ๋ฆฐ๋ค.
concat์ ๋ฐฐ์ด์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐํํด์ค๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ณธ ๋ฐฐ์ด์ ๋ฐ๋์ง ์๋๋ค.
์ด๋ฒ ๋ฉ์๋๋ค์ ์๋ณธ ๋ฐฐ์ด์ ์์ ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ ์ ์๋ค. ์ฌ์ฉ์ ์ถฉ๋ถํ ์ฃผ์ํ์ฌ์ผ ํ๋ค.
const arr = [1, 2, 3, 4, 5];
console.log("splice", arr.splice(3, 2), "\n");
console.log("After splice", arr, "\n");
console.log("push", arr.push(...[10, 11, 12, 13]), "\n");
console.log("After push", arr, "\n");
console.log("pop", arr.pop(), "\n");
console.log("After pop", arr, "\n");
console.log("shift", arr.shift(), "\n");
console.log("After shift", arr, "\n");
console.log("unshift", arr.unshift(100, 101), "\n");
console.log("After unshift", arr, "\n");
splice [ 4, 5 ]
After splice [ 1, 2, 3 ]
push 7
After push [
1, 2, 3, 10,
11, 12, 13
]
pop 13
After pop [ 1, 2, 3, 10, 11, 12 ]
shift 1
After shift [ 2, 3, 10, 11, 12 ]
unshift 7
After unshift [
100, 101, 2, 3,
10, 11, 12
]
splice๋ ์์ ์ธ๋ฑ์ค, ๊ทธ๋ฆฌ๊ณ ์นด์ดํฐ๋ฅผ ๋ฐ๋๋ค.
์์ ์ธ๋ฑ์ค๋ถํฐ ์นด์ดํฐ๊น์ง ์๋ผ๋ธ ๋ฐฐ์ด์ ๋ฐํํ๋ฉฐ ์๋ฆฐ ๊ฒฐ๊ณผ๋ ์๋ณธ ๋ฐฐ์ด์๋ ๋ฐ์๋๋ค.
push์ pop์ ๊ฐ๊ฐ ์ฝ์ , ์ ๊ฑฐ ๋ฉ์๋์ด๋ค.
push๋ ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ์ ๋ ์๋ก์ด ๊ธธ์ด๋ฅผ ๋ฐํํ๊ณ , pop์ ์ ๊ฑฐ๋ ์์๋ฅผ ๋ฐํํ๋ค.
shift์ unshift๋ push, pop๊ณผ ์ ์ฌํ์ง๋ง push, pop์ด ๋ฐฐ์ด์ ๊ผฌ๋ฆฌ์์ ์ผ์ด๋๋ค๋ฉด, shift, unshift๋ ๋ฐฐ์ด์ ๋จธ๋ฆฌ์์ ์ผ์ด๋๋ค๋ ์ ์ด ๋ค๋ฅด๋ค.
๋ฐํ ๊ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๊ฐ ์๋ก์ด ๊ธธ์ด, ์ ๊ฑฐ๋ ์์์ด๋ค.
const arr = [1, 2, 3, 4, 5];
console.log(arr.reverse());
console.log(arr);
console.log(arr.sort((a, b) => a - b));
console.log(arr);
[ 5, 4, 3, 2, 1 ]
[ 5, 4, 3, 2, 1 ]
[ 1, 2, 3, 4, 5 ]
[ 1, 2, 3, 4, 5 ]
reverse์ sort ๋ํ ์๋ณธ ๋ฐฐ์ด์ ์์ ํ๋ค. reverse๋ ๋จ์ํ ๋ฐฐ์ด์ ์ญ์์ผ๋ก ์ ๋ ฌํ๊ณ sort๋ ์ฃผ์ ๋ callback์ ๋ฐ๋ผ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ค.
const arr = [50000, 19999, 30000, 1000000];
console.log(arr.sort());
console.log(
arr.sort((a, b) => {
if (a >= 30000) return -1;
else {
a - b;
}
})
);
[ 1000000, 19999, 30000, 50000 ]
[ 50000, 30000, 1000000, 19999 ]
๋ค๋ง sort์ callback์ธ compareFunc์ ์ฌ์ฉ์ ์ฃผ์ํ์ฌ์ผ ํ๋๋ฐ, ๊ธฐ๋ณธ ๊ฐ์ ๋ฌธ์์ ์ ๋์ฝ๋ ๊ธฐ์ค ์ ๋ ฌ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ ์์์์ 1,000,000์ด ๊ฐ ์์ผ๋ก ์ค๊ฒ ๋๋ค. Number ๊ฐ์ด ๋ค์ด๊ฐ๋ ๋ฌธ์ ๊ธฐ์ค ์ ๋ ฌ์ด๋ฏ๋ก ์ฃผ์ํด์ผํ๋ค.
compareFunc์ ์์, 0, ์์๋ฅผ ๋ฐํํ๋๋ฐ a, b๋ฅผ ๋น๊ตํด ์์ ๊ฐ์ด ๋ฐํ๋ ๊ฒฝ์ฐ a๋ฅผ b๋ณด๋ค ๋ฎ์ ์ธ๋ฑ์ค๋ก ์ทจ๊ธํ๋ค.
๋ฐ๋๋ผ๋ฉด b๊ฐ a๋ณด๋ค ๋ฎ์ ์ธ๋ฑ์ค๋ก ์ ๋ ฌ๋๋ค. 0์ด๋ผ๋ฉด ์๋ก๋ฅผ ์ ๋ ฌํ์ง ์๊ณ ๋ค์ ์์๋ก ๋์ด๊ฐ๋ค.
const arr = [3, 6, 10000, 5250, 6];
console.log(arr.sort());
console.log(arr.sort((a, b) => a - b));
console.log(arr.sort((a, b) => b - a));
[ 10000, 3, 5250, 6, 6 ] // ๋ฌธ์ ์ ๋์ฝ๋ ๊ฐ ๊ธฐ์ค
[ 3, 6, 6, 5250, 10000 ] // ์ค๋ฆ์ฐจ์
[ 10000, 5250, 6, 6, 3 ] // ๋ด๋ฆผ์ฐจ์
๋ค์๊ณผ ๊ฐ์ด compareFunc์ ์ ์ ํ๊ฒ ์์ฉํ ์ ์๋ค.
const arr = [1, 2, 3, 4, 5];
let result = 0;
for (let i = 0; i < arr.length; i++) {
result += arr[i];
}
console.log(result);
arr.forEach((item) => (result += item));
console.log(result);
15
30
forEach ๋ฉ์๋๋ ์ฃผ์ด์ง ๋ฐฐ์ด์ ์์๋ง๋ค callback์ ํ ๋ฒ์ฉ ์คํํ๋ค. ์ด๋ map์ฒ๋ผ ๋ฐฐ์ด์ ๋ฐํํ๋ ๊ฒ ์๋ undefined๋ฅผ ๋ฐํํ๋ค.
const arr = [1, 2, 3, 4, 5];
console.log(arr.reduce((acc, curr) => acc + curr));
console.log(arr.reduce((acc, curr) => acc + curr, 100));
15
115
reduce๋ ์ ์ฉํ ๋ฉ์๋์ด๋ค. ์ธ์๋ก callback๊ณผ accumulator๋ฅผ ๋ฐ๋๋ค.
accumulator๋ ์ฒซ ํธ์ถ ๋ ์ค์ ํ ๊ฐ์ด ์๋ค๋ฉด ์ค์ ํ ๊ฐ์ ๋ฐ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ์์๊ฐ ๋๋ค.
์ฒซ ํธ์ถ ์ดํ๋ถํฐ๋ callback์์ ๋ฐํํ ๊ฐ๋ค์ด accumulator๊ฐ ๋๋ค.
const arr = [1, 2, 3, 4, 5];
let result = 0;
console.log(
arr.reduce((acc, curr) => {
acc.push(curr * 2);
return acc;
}, [])
);
[ 2, 4, 6, 8, 10 ]
reduce๋ ๋ค์๊ณผ ๊ฐ์ด map ํจ์์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฑ ์ฌ์ฉ์์ ์๋์ ๋ฐ๋ผ ๋ค์ํ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ค.