๐ Javascript ๋ฐ์ดํฐ #01 :)
- String: "", '', ``
- Number
- Boolean: true, false
- undefined
- null
- Array: []
- Object: {}
1. ๋ฌธ์(String)
- String ์ ์ญ ๊ฐ์ฒด๋ ๋ฌธ์์ด(๋ฌธ์์ ๋์ด)์ ์์ฑ์์ด๋ค.
- ๋ฌธ์์ด์ String ์ ์ญ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ ์์ฑํ ์ ์๋ค.
๐ต String ์์ฑ์ ํจ์
- ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ํ ๋นํ String ๋ํผ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก length ํ๋กํผํฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ์ซ์ ํ์์ ๋ฌธ์์ด์ ํ๋กํผํฐ ํค๋ก, ๊ฐ ๋ฌธ์๋ฅผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ฐ๋ ์ ์ฌ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉด์ ์ดํฐ๋ฌ๋ธ์ด๋ค.
- ๋ฐฐ์ด๊ณผ ์ ์ฌํ๊ฒ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฌธ์์ ์ ๊ทผ ๊ฐ๋ฅํจ.
- String์ prototype๋ฉ์๋๋ ๋ชจ๋ ์๋ณธ๋ฌธ์์ด์ ์์ ํ์ง ์๊ณ ๋ฐํํจ!!
๐ต String.prototype.indexOf()
- indexOf() ๋ฉ์๋๋ ํธ์ถํ String๊ฐ์ฒด์์ ์ฃผ์ด์ง ๊ฐ๊ณผ ์ผ์นํ๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
- ์ผ์นํ ์คํธํ๋ ๊ฐ์ด ์์ผ๋ฉด -1์ ๋ฐํํ๋ค.
- ์ฐพ์ผ๋ ค๋ ๋ฌธ์์ด์ธ์์ ์๋ฌด ๊ฐ๋ ์ฃผ์ด์ง์ง ์์ผ๋ฉด ๋ฌธ์์ด "undefined"๋ฅผ ์ฐพ์ผ๋ ค๋ ๋ฌธ์์ด๋ก ์ฌ์ฉํ๋ค.
๐พ #1
const str = "Hello wold"
console.log(str.indexOf('zooyaho') !== -1) // false
๐พ #2
const str = "Hello wold"
console.log(str.indexOf()) // -1
๐ต String.prototype.subString()
- subString(์์ํ ์ธ๋ฑ์ค ์ซ์, ๋ง์ง๋ง ์ธ๋ฑ์ค ์ซ์)
- ๋์ ๋ฌธ์์ด์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค์ ์์ฐจํ๋ ๋ฌธ์๋ถํฐ ๋ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค์ ์์นํ๋ ๋ฌธ์์ ๋ฐ๋ก ์ด์ ๊น์ง์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐํ
- ๋๋ฒ์งธ ์ธ์ ์๋ต ๊ฐ๋ฅ, ๋ง์ง๋ง ๋ฌธ์๊น์ง ๋ฐํ
๐ต String.prototype.slice()
- subString()๊ณผ ๋์ผํ๊ฒ ๋์.
- ์์์ธ ๋ฉ์๋๋ฅผ ์ ๋ฌํ ์ ์๊ณ , ์์์ธ ์ธ์๋ ๋์ ๋ฌธ์์ด์ ๊ฐ์ฅ ๋ค์์๋ถํฐ ์์ํ์ฌ ๋ฌธ์์ด์ ์๋ผ๋ด์ด ๋ฐํ
๐พ #1
const str = "Hello World"
console.log(str.slice(0,3)) // Hel
๐ต String.prototype.search()
- ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ๊ทํํ์๊ณผ ๋ฌธ์์ด์ด ๋งค์นํ๋ ๋ฌธ์์ด์ ๊ฒ์ํ์ฌ ์ผ์นํ๋ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
- ๊ฒ์์ ์คํจํ๋ฉด -1 ๋ฐํ
๐ต String.prototype.includes()
- ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฐ์ผ๋ก ๋ฐํ
- ๋๋ฒ์งธ ์ธ์๋ก ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฌ
๐ต String.prototype.startsWith()
- ๋์ ๋ฌธ์์ด์ด ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด๋ก ์์ํ๋์ง ๊ฒ์ฌ, ๋ถ๋ฆฐ์ผ๋ก ๋ฐํ
- ๋๋ฒ์งธ ์ธ์๋ก ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฌ
๐ต String.prototype.endsWith()
- ๋์ ๋ฌธ์์ด์ด ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด๋ก ๋๋๋์ง ๊ฒ์ฌ, ๋ถ๋ฆฐ์ผ๋ก ๋ฐํ
- ๋๋ฒ์งธ ์ธ์๋ก ๊ฒ์ํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ ๋ฌ
๐ต String.prototype.charAt()
๋์ ๋ฌธ์์ด์์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค์ ์์นํ ๋ฌธ์๋ฅผ ๊ฒ์ํ์ฌ ๋ฐํ
- ์ธ๋ฑ์ค๊ฐ ๋ฌธ์์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ ์์ธ ๊ฒฝ์ฐ ๋น ๋ฌธ์์ด์ ๋ฐํ
๐ต String.prototype.replace()
replace('๋ฐ๋ ๋จ์ด', '๋ฐ๊ฟ ๋จ์ด')
๐พ #1
const str = 'Hello world!'
console.log(str.replace('world','zooyaho')) // Hello zooyaho!
๐พ #2
๐๐ป ๋จ์ด ์ ๊ฑฐ ์ ์ ์ฉ -> ๋น๋ฌธ์ ์ด์ฉ
str.replace(' world!', '') // Hello
๐ต String.prototype.match()
์ ๊ทํํ์ ์ฌ์ฉํ์ฌ ํน์ ๋ฌธ์๋ฅผ ๋ฐฐ์ด๋ฐ์ดํฐ๋ก ๋ฐํํจ.
๐พ #1
const str = '[email protected]'
console.log(str.match(/.+(?=@)/)[0]) // zooyaho
๐ต String.prototype.trim()
๋ฌธ์ ์ฒ์๊ณผ ๋์ ๊ณต๋ฐฑ๋ฌธ์๋ฅผ ์ ๊ฑฐํด์ค.
๐พ #1
const str = ' Hello world '
console.log(str.trim()) // Hello world
๐ต String.prototype.split()
- String ๊ฐ์ฒด๋ฅผ ์ง์ ํ ๊ตฌ๋ถ์๋ฅผ ์ด์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์์ด๋ก ๋๋.
- ์ธ์๋ฅผ ์๋ตํ๋ฉด ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋จ์ผ ์์๋ก ํ๋ ๋ฐฐ์ด์ ๋ฐํ
- ๋๋ฒ์งธ ์ธ์๋ก ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ง์ ํ ์ ์์(์ต์ )
๐พ #1
const myName = "my name is zooyaho";
console.log(myName.split(' '));
// ["my","name","is","zooyaho"]
๐พ #2 ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ์ญ์์ผ๋ก ๋ค์ง๋๋ค.
function reverseString(str) {
return str.split('').reverse().join('');
}
console.log(reverseString('Hello Wold!'));
// '!dloW olleH'
๐ต String.prototype.repeat()
- ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ์๋งํผ ๋ฐ๋ณตํด ์ฐ๊ฒฐํ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํจ.
- ์ธ์๊ฐ 0์ด๋ฉด ๋น ๋ฌธ์์ด์ ๋ฐํ!, ์์์ด๋ฉด RangeError๋ฅผ ๋ฐ์, ์๋ตํ๋ฉด ๊ธฐ๋ณธ๊ฐ 0
๐ต String.prototype.replace()
- replace(๊ต์ฒด๋นํ ๋ฌธ์์ด, ๊ต์ฒดํ ๋ฌธ์์ด)
- ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๊ทํํ์๊ณผ ๋ฌธ์์ด์ ์ง์ ํ ์ ์์.
- ๋๋ฒ์งธ ์ธ์๋ก ๊ต์ฒด๋จ.
2-1. ์ซ์(Number)
๐ต Number.isInteger()
- ์ธ์๋ก ์ ๋ฌ๋ ์ซ์๊ฐ์ด ์ ์์ธ์ง ๊ฒ์ฌํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํ
- ์ธ์๋ฅผ ์๋ฌต์ ํ์ ๋ณํํ์ง ์์.
Number.isInteger(0) // true
Number.isInteger('12') // false
Number.isInteger(Infinity) // false
๐ต Number.isNaN()
- ์ธ์๋ก ์ ๋ฌ๋ ์ซ์๊ฐ์ด NaN์ธ์ง ๊ฒ์ฌํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํ
- ์ธ์๋ฅผ ์๋ฌต์ ํ์ ๋ณํํ์ง ์์.
Number.isNaN(NaN) // true
Number.isNaN(undefined) // false
// ์๋ฌต์ ํ์
๋ณํ์ผ๋ก undefined์ด NaN์ด ๋จ.
isNaN(undefined) // true
๐ต Number.prototype.toFixed()
- toFixed() ๋ฉ์๋๋ ์ซ์๋ฅผ ๊ณ ์ ์์์ ํ๊ธฐ๋ฒ(fixed-point notation)์ผ๋ก ํ์ํจ.
- ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด 0์ ์ฌ์ฉํจ.
- ๊ณ ์ ์์์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ํ๋ธ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํํจ.
const pi = 3.1415926535
console.log(pi.toFixed(2)) // '3.14'
๐ต Number.prototype.toString()
- ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค.
- ์ง๋ฒ์ ๋ํ๋ด๋ 2~36 ์ฌ์ด์ ์ ์๊ฐ์ผ๋ก ์ธ์๋ก ์ ๋ฌํ ์ ์๋ค.
- ์ธ์๋ฅผ ์๋ตํ๋ฉด ๊ธฐ๋ณธ๊ฐ 10์ง๋ฒ์ด ์ง์ ๋๋ค.
(10).toString() // '10'
(16).toString(2) // '10000'
๐ต Number.parseInt()
- Number.parseInt() ๋ฉ์๋๋ ๋ฌธ์์ด ์ธ์๋ฅผ ํ์ฑํ์ฌ ํน์ ์ง์(์์ ์ง๋ฒ ์ฒด๊ณ์์ ๊ธฐ์ค์ด ๋๋ ๊ฐ)์ ์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
const pi = 3.1415926535
const str = pi.toFixed(2) // '3.14'
console.log(parseInt(str)) // 3
2-2. Math
Math๋ ์ํ์ ์ธ ์์์ ํจ์๋ฅผ ์ํ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ฐ์ง ๋ด์ฅ ๊ฐ์ฒด์ด๋ค. ํจ์ ๊ฐ์ฒด๊ฐ ์๋๋ค!!!
- Math.abs(n): n์ ์ ๋๊ฐ ๋ฐํ(absolute)
- Math.min(n,n): n๊ฐ์ค ์์ ๊ฐ ๋ฐํ
- Math.max(n,n): n๊ฐ์ค ํฐ ๊ฐ ๋ฐํ
- Math.ceil(n): ์ฌ๋ฆผ ๊ฐ ๋ฐํ
- Math.floor(n): ๋ด๋ฆผ ๊ฐ ๋ฐํ
- Math.round(n): ๋ฐ์ฌ๋ฆผ ๊ฐ ๋ฐํ
- Math.random(): 0~1 ์ฌ์ด์ ๋๋ค ๊ฐ ๋ฐํ(๋์)
๐ต Math.min(), Math.max()
๋ฐฐ์ด์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด์ ์์ ์ค์์ ์ต๋๊ฐ, ์ต์๊ฐ์ ๊ตฌํ๋ ค๋ฉด Function.prototype.apply()๋ฉ์๋ ๋๋ ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
Math.max.apply(null, [1,3,5]); // 5
Math.max(...[2,7,1]); // 7
3. ๋ฐฐ์ด(Array)
๋ฐฐ์ด์ ๊ฐ๋ค์ "element = ์์ = item"๋ผ ์นญํจ
๐ต Array.isArray()
- ์ธ์๊ฐ Array์ธ์ง ํ๋ณํจ. true,false ๋ฐํ
- typeOf๋ก ํ๋ณํ๋ฉด object๊ฐ ๋ฐํ๋๊ธฐ ๋๋ฌธ์ ์ ํํ๊ฒ ์ ์ ์์.
const fruits = ['Banana', 'Apple', 'Cherry'];
console.log(Array.isArray(fruits)); // true
๐ต Array.prototype.concat()
๋๊ฐ์ ๋ฐฐ์ด๋ฐ์ดํฐ๋ฅผ ๋ณํฉํ์ฌ ์๋ก์ด ๋ฐฐ์ด๋ฐ์ดํฐ๋ฅผ ๋ดํ , ์๋ณธ์ ๋ฐ์ดํฐ๋ ์์๋์ง ์์.
๐พ #1
const numbers = [5, 6, 12]
const fruits = ['Apple', 'Banana', 'Cherry']
console.log(numbers.concat(fruits));
// [5, 6, 12, 'Apple', 'Banana', 'Cherry']
๐ต Array.prototype.sort()
- ๋ฐฐ์ด์ ์์๋ฅผ ์ ๋ ฌ, ์๋ณธ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ฉฐ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฐํ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์์๋ฅผ ์ ๋ ฌํจ.
- sort()๋ ์ ๋์ฝ๋ ์ฝ๋ํฌ์ธํธ์ ์์๋ฅผ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์ซ์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ์ ๋ ฌํ ๋๋ ์ฃผ์๊ฐ ํ์ํจ.
๐พ #1
const fruits = ['Banana', 'Apple', 'Cherry'];
fruits.sort(); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
console.log(fruits) // ['Apple', 'Banana', 'Cherry']
๐พ #2 ์ซ์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด
const points = [40, 100, 23, 4, 21];
// ์ค๋ฆ์ฐจ์
points.sort((a,b)=> a - b);
console.log(points); // [4,21,23,40,100]
// ๋ด๋ฆผ์ฐจ์
points.sort((a,b)=> b - a);
console.log(points); // [100,40,23,21,4]
๐พ #3 ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด
const todos = [
{ id: 3, content: 'JS'},
{ id: 1, content: 'HTML'},
{ id: 5, content: 'CSS'}
];
// ๋น๊ตํจ์, ๋งค๊ฐ๋ณ์ key๋ ํ๋กํผํฐ ํค์ด๋ค.
function compare(key){
return (a,b) => ( a[key] > b[key] ? 1 : ( a[key] < b[key] ? -1 : 0));
}
// id๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
todos.sort(compare('id'));
console.log(todos); // [{id:1..}, {id:3..}, {id:5..}]
// content๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
todos.sort(compare('content'));
console.log(todos);
๐ต Array.prototype.forEach()
- forEach() ๋ฉ์๋๋ ์ฃผ์ด์ง ํจ์(์ฝ๋ฐฑํจ์)๋ฅผ ๋ฐฐ์ด ์์ ๊ฐ๊ฐ์ ๋ํด ์คํํจ.
- forEach(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
- item: ์ฒ๋ฆฌํ ํ์ฌ ์์๊ฐ
- index: ์ฒ๋ฆฌํ ํ์ฌ ์์์ ์ธ๋ฑ์ค (opt)
- array: forEach()๋ฅผ ํธ์ถํ ๋ฐฐ์ด (opt)
- class์ ๋ฉ์๋์์ forEachํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํ์ดํํจ์ ๋ด๋ถ์์ this๋ฅผ ์ฐธ์กฐํ๋ฉด ์์ ์ค์ฝํ์ this๋ฅผ ๊ทธ๋๋ก ์ฐธ์กฐํจ. ์ฝ๋ฐฑํจ์์์ this์ฐธ์กฐ ์ ํ์ดํํจ์๋ก ์์ฑํ๋ ๊ฒ์ด ์ข์, forEachํจ์์ ๋๋ฒ์งธ ์ธ์์ธ 'this๋ก ์ฌ์ฉํ ๊ฐ์ฒด'๋ฅผ ์๋ตํด๋ ๋๊ธฐ ๋๋ฌธ.
๐พ #1
const fruits = ['Apple', 'Banana', 'Cherry']
fruits.forEach(function(element, index, array) {
console.log(element, index, array)
});
๐Console
๐พ #2
const fruits = ['Apple', 'Banana', 'Cherry']
const b = fruits.forEach(function(fruit, index) {
console.log(`${fruit} - ${index}`)
});
console.log(b);
๐Console
๐พ #3
class Numbers {
numberArray = [];
multiply(arr){
// ํ์ดํ ํจ์ ๋ด๋ถ์์ this๋ฅผ ์ฐธ์กฐํ๋ฉด ์์ ์ค์ฝํ์ this๋ฅผ ๊ทธ๋๋ก ์ฐธ์กฐํ๋ค.
arr.forEach(item => this.numberArray.push(item * item));
}
}
const numbers = new Numbers();
numbers.multiply([1,2,3]);
console.log(numbers.numberArray); // [1,4,9]
๐ต Array.prototype.map()
- map() ๋ฉ์๋๋ ๋ฐฐ์ด ๋ด์ ๋ชจ๋ ์์ ๊ฐ๊ฐ์ ๋ํ์ฌ ์ฃผ์ด์ง ํจ์(์ฝ๋ฐฑํจ์)๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
- map(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
๐พ #1
const fruits = ['Apple', 'Banana', 'Cherry']
const b = fruits.map(function(fruit, index) {
return`${fruit} - ${index}`
});
console.log(b); // ['Apple-0', 'Banana-1', 'Cherry-2']
๐พ #2
b = fruits.map(function (fruit, index){
return { id:index, name:fruit }
});
console.log(b);
/* ์ถ์ฝํ */
b = fruits.map( (fruit, index) =>{
id:index, name=fruit
});
๐Console
๐ต Array.prototype.filter()
- filter() ๋ฉ์๋๋ ์ฃผ์ด์ง ํจ์(์ฝ๋ฐฑํจ์)์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ๋ชจ๋ ์์๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํจ.
- filter(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
๐พ #1
const numbers = [1, 2, 3, 4]
const a = numbers.filter(number => {
return number < 3
});
console.log(a); // [1,2]
๐ต Array.prototype.reduce()
- ์ฝ๋ฐฑํจ์์ ๋ฐํ๊ฐ์ ๋ค์ ์ํ์์ ์ฝ๋ฐฑํจ์์ ์ฒซ๋ฒ์ฌ์ธ์๋ก ์ ๋ฌํ๋ฉด์ ์ฝ๋ฐฑํจ์๋ฅผ ํธ์ถํ์ฌ ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ง๋ค์ด ๋ฐํํ๋ค. ์๋ณธ๋ฐฐ์ด ๋ณ๊ฒฝ์๋จ.
- reduce(์ฝ๋ฐฑํจ์((์ด๊ธฐ๊ฐ or ์ด์ ๋ฐํ๊ฐ), ์์๊ฐ, ์ธ๋ฑ์ค, arr), ์ด๊ธฐ๊ฐ) -> ์ด๊ธฐ๊ฐ ์๋ต ๊ฐ๋ฅ(ํ์ง๋ง ์์ฑํ๋ ๊ฒ์ด ์์ ํจ.)
๐พ #1
const sum = [1,2,3,4].reduce((ammulator, currentValue, index, arr)=> ammulator + currentValue,0);
console.log(sum); // 10
๐พ #2 ํ๊ท ๊ตฌํ๊ธฐ
const values = [1,2,3,4,5,6];
const average = values.reduce((acc, cur, i, {length}) => {
return i === length - 1 ? (acc + cur) / length : acc+cur;
}, 0);
console.log(average); // 3.5
๐พ #3 ์์์ ์ค๋ณต ํ์ ๊ตฌํ๊ธฐ
const fruits = ['Apple', 'Banana', 'Cherry', 'Cherry', 'Apple'];
const count = fruits.reduce((acc,cur) => {
// ๋ง์ฝ ํ๋กํผํฐ ๊ฐ์ด undefined(์ฒ์ ๋ฑ์ฅํ๋ ์์)์ด๋ฉด ํ๋กํผํฐ ๊ฐ์ 1๋ก ์ด๊ธฐํํ๋ค.
acc[cur] = (acc[cur] || 0) + 1;
return acc;
},{});
console.log(count); // object {'Apple': 2, 'Banana': 1, 'Cherry': 2}
๐พ #4 ์ค๋ณต ์์ ์ ๊ฑฐ
const values = [1,2,1,3,5,4,5,3,4,4];
let result = values.reduce(
(unique, val, i, _values) => {
// true -> [...unique,val]: unique๋ฐฐ์ด์ val์์ ์ถ๊ฐ
// false -> unique: ์ถ๊ฐ ํ์ง ์์.
return _values.indexOf(val) === i ? [...unique,val] : unique},
[] // ์ด๊ธฐ๊ฐ: ๋น ๋ฐฐ์ด
);
console.log(result); // [1,2,3,5,4]
/* filter()๊ฐ ๋ ์ง๊ด์ ์ */
result = values.filter((val, i, _values) => _values.indexOf(val) === i);
console.log(result); // [1,2,3,5,4]
๐ต Array.prototype.find()
- find(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
- find()๋ฉ์๋๋ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ ์์์ ๊ฐ์ ๋ฐํํจ.
- ์ฝ๋ฐฑํจ์์ ๋ฐํ๊ฐ์ด true์ธ ์์๊ฐ ์กด์ฌํ์ง ์๋ค๋ฉด undefined๋ฅผ ๋ฐํํจ.
๐พ #1
const array = [5, 6, 12]
const found = array.find( el => el > 10 )
console.log(found); // 12
๐พ #2
const fruits = ['Apple', 'Banana', 'Cherry']
const a = fruits.find(fruit => {
return /^B/.test(fruit)
});
console.log(a); // Banana
๐ต Array.prototype.findIndex()
- findIndex() ๋ฉ์๋๋ ์ฃผ์ด์ง ํ๋ณ ํจ์(์ฝ๋ฐฑํจ์)๋ฅผ ๋ง์กฑํ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ฒซ ๋ฒ์งธ ์์์ ๋ํ ๋ฐํ.
- ๋ง์กฑํ๋ ์์๊ฐ ์์ผ๋ฉด -1์ ๋ฐํ.
- findIndex(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
๐พ #1
const fruits = ['Apple', 'Banana', 'Cherry']
const a = fruits.findIndex(fruit => {
return /^C/.test(fruit)
});
console.log(a); // 2
๐ต Array.prototype.some()
- some(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
- ์ฝ๋ฐฑํจ์์ ๋ฐํ๊ฐ์ด ๋จ ํ๋ฒ์ด๋ผ๋ ์ฐธ์ด๋ฉด true, ๋ชจ๋ ๊ฑฐ์ง์ด๋ฉด false๋ฅผ ๋ฐํํ๋ค.
- ํธ์ถํ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํ๋ค.
๐พ #1
[5,10,15].some(item => item < 10); // true
[5,10,15].some(item => item < 5); // false
๐ต Array.prototype.every()
- every(์ฝ๋ฐฑํจ์(item, index, arr), this๋ก ์ฌ์ฉํ ๊ฐ์ฒด)
- ์ฝ๋ฐฑํจ์์ ๋ฐํ๊ฐ์ด ๋ชจ๋ ์ฐธ์ด๋ฉด true, ๋จ ํ๋ฒ์ด๋ผ๋ ๊ฑฐ์ง์ด๋ฉด false๋ฅผ ๋ฐํํ๋ค.
- ํธ์ถํ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํ๋ค.
๐พ #1
[5,10,15].some(item => item < 50); // true
[5,10,15].some(item => item < 10); // false
๐ต Array.prototype.flatMap()
- map๋ฉ์๋์ flat๋ฉ์๋๋ฅผ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ํจ๊ณผ๊ฐ ์๋ค.
- ํํํ ๊น์ด๋ฅผ ์ง์ ํ ์ ์๊ณ 1๋จ๊ณ๋ง ํํํํ๋ค.
๐พ #1
const arr = ['hello','world'];
let result = arr.flatMap(x => x.split(''));
console.log(result);
// ["h","e","l","l","o","w","o","r","l","d"]
result = arr.map(x => x.split(''));
console.log(result);
// [["h","e","l","l","o"],["w","o","r","l","d"]]
๐ต Array.prototype.includes()
includes() ๋ฉ์๋๋ ๋ฐฐ์ด์ด ํน์ ์์๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ๋ณํจ.
๐พ #1
const fruits = ['Apple', 'Banana', 'Cherry']
const a = fruits.includes('Apple');
console.log(a); // true
๐ต Array.prototype.push()
- push() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋์ ํ๋ ์ด์์ ์์๋ฅผ ์ถ๊ฐํ๊ณ , ๋ฐฐ์ด์ ์๋ก์ด ๊ธธ์ด๋ฅผ ๋ฐํํจ.
- ์๋ณธ ์์ ๋จ.
๐พ #1
const numbers = [1, 2, 3, 4]
numbers.push(5)
console.log(numbers) // [1, 2, 3, 4, 5]
๐ต Array.prototype.unshift()
- unshift() ๋ฉ์๋๋ ์๋ก์ด ์์๋ฅผ ๋ฐฐ์ด์ ๋งจ ์์ชฝ์ ์ถ๊ฐํ๊ณ , ์๋ก์ด ๊ธธ์ด๋ฅผ ๋ฐํํจ.
- ์๋ณธ ์์ ๋จ.
๐พ #1
const numbers = [1, 2, 3, 4]
numbers.unshift(0)
console.log(numbers) // [0, 1, 2, 3, 4]
๐ต Array.prototype.reverse()
- reverse() ๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๋ฅผ ๋ฐ์ ํจ. ์ฒซ ๋ฒ์งธ ์์๋ ๋ง์ง๋ง ์์๊ฐ ๋๋ฉฐ ๋ง์ง๋ง ์์๋ ์ฒซ ๋ฒ์งธ ์์๊ฐ ๋จ.
- ์๋ณธ ์์ ๋จ.
๐พ #1
const numbers = [1, 2, 3, 4]
numbers.reverse()
console.log(numbers) // [4, 3, 2, 1]
๐ต Array.prototype.slice()
- slice() ๋ฉ์๋๋ ์ด๋ค ๋ฐฐ์ด์ begin๋ถํฐ end๊น์ง(end ๋ฏธํฌํจ)์ ๋ํ ์์ ๋ณต์ฌ๋ณธ์ ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๋ก ๋ฐํํฉ๋๋ค. ์๋ณธ ๋ฐฐ์ด์ ๋ฐ๋์ง ์์ต๋๋ค.
๐พ #1
const fruits = ['Apple', 'Banana', 'Cherry']
const a = fruits.slice(1,3);
console.log(a); // ['Banana', 'Cherry']
๐ต Array.prototype.splice()
- splice() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ธฐ์กด ์์๋ฅผ ์ญ์ ๋๋ ๊ต์ฒดํ๊ฑฐ๋ ์ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํฉ๋๋ค.
- ์๋ณธ ์์ ๋จ.
๐พ #1
/* splice(์ญ์ ์์ํ ์ธ๋ฑ์ค๊ฐ, ์ญ์ ํ ๊ฐ์) */
const numbers = [1, 2, 3, 4]
numbers.splice(2, 1)
console.log(numbers); // [1, 2, 4]
๐พ #2
/* splice( n, ์ญ์ ํ ๊ฐ์ , n๋ฒ์งธ์ ์ฝ์
ํ ๋ฐ์ดํฐ )
: n์ธ๋ฑ์ค๋ถํฐ 2๋ฒ์งธ ์ธ์ ์๋งํผ ์ญ์ ํ๊ณ ๋ฐ์ดํฐ ์ฝ์
*/
const numbers = [1, 2, 3, 4]
numbers.splice(2, 0, 999)
console.log(numbers); // [1, 2, 999, 3, 4]
๐ต Array.prototype.join()
- join() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ฐ๊ฒฐํด ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ญ๋๋ค.
const myName = ['my', 'name', 'is', 'zooyaho'];
console.log(myName.join(' ')); //"my name is zooyaho"
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ Javascript ๋ฐ์ดํฐ #01 :)), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@zooyaho/Javascript-๋ฐ์ดํฐ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค