September 28, 2020
๊ตฌ๊ธ ์บ๋ฆฐ๋์ ์ดํ ์ ๊ธ์์ผ ์บ๋ฆฐ๋์ ๋ด์ฉ์ ๊ณ ์ฐจ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉํ์ด ํํ ํธ๋ ค๋ฒ๋ ธ๋ค. ํ์ด ํ๋ก๊ทธ๋๋ฐ์ธ๋ฐ ๋ด๊ฐ ํ์ด๋์๊ฒ ์ ํ ๋์์ ๋๋ฆฌ์ง ๋ชปํ ๋ฟ๋๋ฌ ํ๋๋ ์ดํด๊ฐ ๋์ง ์๋๋ผ. ์ฃผ๋ง์ ๊ณต๋ถํด ๋ณด์ ํ๋ฉด์๋ ์์ํดํ๋ค.
์ค๋ ํ 2์ ๋ฐ ๋ถํฐ ํ์ต๋ค์ด ํ์ต์ ์์ํ๋ค. ๋์ ํ์ด๋๊ป์ ์ ์ฌ์๊ฐ ๋์ฏค โ๋๋ฆผ์ฝ๋ฉ ์๋ฆฌโ ๋ผ๋ ์ ํ๋ฒ๋์ ๊ฐ์๋ฅผ ๋ค์ ๊ฒ์ ์ถ์ฒํด ์ฃผ์ จ๋ค.
https://www.youtube.com/watch?v=3CUjtKJ7PJg&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=9
์ ์ฉํ 10๊ฐ์ง ๋ฐฐ์ด ํจ์๋ค์ ๊ดํ์ฌ ๋ฐฐ์ด๋ค๋ ์ ๋ชฉ์ ๊ฐ์ง๊ณ ์์๋๋ฐ ์ฌ์ง ๋๋์ ์ฒ์๋ถํฐ ๋ด์ผ ์์์ ์ ๋๋ก ์ดํดํ ์ ์๊ฒ ๋ค ์ถ์ด ์์ ์ 8๊ฐ ๊ฐ์๋ฅผ ๋ชจ์กฐ๋ฆฌ ๋ค์ด๋ฒ๋ ธ๋ค.
๊ฒฐ๋ก ์ ๋ชจ์กฐ๋ฆฌ ๋ค์ด๋ฒ๋ฆฐ๊ฒ ๋ณต์ต ๋ฟ๋ง ์๋๋ผ ๋ณธ๊ฒ์์ ๋ ์ ๋๋ก ์ ์ดํดํ ์ ์๊ฒ ๋์ด๋ฒ๋ ธ๋ค. ๊ทธ๋ฌ๋ฉด์ ์๊ฒ ๋ ์ฌํญ์ ๋จ๊ฒจ๋ดค๋ค.
๋ง์นจ Koans-08 ์ฃผ์ ๊ฐ Rest Paramenters ๊ดํ ๊ฑฐ์ด๊ธฐ๋ ํ๊ณ ๋ณต์ตํ๋ ๊ณผ์ ์์ ๋ฑ ๊ทธ๊ฑฐ๋ง ๋จ๊ฒจ๋ ์ํ์๋ค. ๊ทธ๋์ ๋ค์ ํ์ด๋ดค๋ค. ๋งค์ฐ ๋์์ด ๋์๋ค.
ํจ์ ์ ์ธ์์ ์ฌ์ฉํ๋๋ฐ๋ง ์ต์ํด์ ธ ์๋๋ฐ ํํ์์ ์กฐ๊ธ ๋ ์ ๊ทน์ ์ผ๋ก ์ฝ์์ ํ ์คํธํ๊ธฐ ์์ํ๋ค.
๊ธ์์ผ๋ ํ์ด๋์๊ฒ ๋ฃ๊ธฐ๋ ํ๋๋ฐ ์ด๊ฒ ๋ญ๊ฐ ์ถ์๋๋ฐ ์ค๋ ์๊ฒ ๋๊ณ ๋๋ ์ ๋ง ํธ๋ฆฌํ ๊ฑฐ์๊ตฌ๋ ์ถ๋ค.
const simplePrint = function() {
console.log('simplePrint')
}
์ด ํจ์ ํํ์์ ํ ์ค๋ก ํํ์ด ๊ฐ๋ฅํ๋ค. Arrow Function ์ผ๋ก.. ์ฝ๊ฒ! ๋งํ๋ฉด function ๊ธ์ํ๊ณ curly bracket ๋ถ๋ถ๋ง์ ๋ ๋ ค ๋ฒ๋ฆฌ๋ ๊ฑฐ๋ค. ๋์ => ์๋ฐ ๊ธฐํธ๋ฅผ ์จ์ฃผ๋๋ฐ,
const simplePrint = () => console.log('simplePrint')
=> ์ด ํ์ดํ ๋ค์์ ์ค๋ ๊ฑฐ๋ ๋ฆฌํด ๊ฐ์ด ๊ฑฐ์ ์ ๋ ฅํ๋ค.
ํ๋ฒ ๋ ์๋ฅผ ๋ค์ด๋ณด๋ฉด,
const add = function(a, b) {
return a + b
}
์ด ํจ์ ํํ์์, ํ์ดํ ํจ์๋ฅผ ์ ์ฉํ๋ฉด
const add = (a, b) => a + b
์ด๋ ๋ฏ ๊ฐ๊ฒฐํ๊ฒ ์ธ ์ ์๊ณ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์์ฑ ์ ๋ ๋น์ ๋ฐํ๋ค๊ณ ํ๋ค. ๋ฌผ๋ก ์ด๊ฑฐ ์๊ฒ ๋ ์์ ์๋ ์ง์ง ๋ณธ๋ก ์ธ ๋ฐฐ์ด ํจ์๋ฅผ ์๋๋ฐ ๋ญ ์ค์ํ๋ ๋์๋กญ์ง ์๊ฒ ์ฌ๊ฒผ๋ค.
๋ฌดํผ ํจ์ ์์์ ๋ ๋ง์ ์์ ์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ bracket ์ ๋ฃ์ด arrow ์ ๊ฐ์ด ์ธ ์๋ ์๋ค. ์ด๋๋ bracket ๊ณผ return ์ ํ๊ธฐํด ์ค์ผ ํ๋ค.
const simpleMultiply = (a, b) => {
// do something more
return a * b
}
๋ด ์๊ฐ์ ํ์ดํ ํจ์๋ฅผ ์๊ณ ๋์ด๊ฐ๋ฉด ํจ๊ณผ๊ฐ ๋ฐฑ๋ง์ ์ด๋ค.
์ผ๋ฐ์ ์ธ ๋ฐ๋ณต๋ฌธ์ ํํ๋ ๊ณต๋ถํ๋ ์ ์ฅ์์ ๋๋ฌด๋ ์ ์๊ณ ์๋ค. ๊ทธ๋ผ ๋๋จธ์ง ๋๊ฐ๋ ๋ญ๊น?
let fruits = ['๐', '๐', '๐', '๐', '๐']
// for of ๊ตฌ๋ฌธ
for (let fruit of fruits) {
console.log(fruit)
}
// ๋๋ง์ forEach, ๋ฐฐ์ด ๋ด ๊ฐ๋ง๋ค ์ ํด์ง action (์ฝ๋ฐฑํจ์)์ ์ํํ๋ ํจ์
fruits.forEach(function(fruit, index, array) {
console.log(fruit, index, array) // array ๋ ๋ณดํต ์๋ฐ์์จ๋ค.
})
// ์ต๋ช
ํจ์๋ arrow function ์ ์ธ ์ ์๋ค๊ณ ๋ฐฐ์ ๋ค!
fruits.forEach(fruit => console.log(fruit)) // ๋ฐฐ์ด ๋ด value ๋ค ๋ง๋ค ๋ด๊ฐ ์ ๋ฌํ ํจ์๋ฅผ ์ถ๋ ฅํ๋๊ตฌ๋!
์์ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ์ผํญ ์ฐ์ฐ์ ์ ๋ํด์๋ ์ข ๋ ์ ํํ ์๊ฒ ๋์๋๋ฐ ์ด๊ฑฐ๋ Array Function ์ ์๊ธฐ ์ํด์ ํ์๋ ์๋๋ค.
๊ทผ๋ฐ ๋ค์ ํ๋ฒ ๋งํ์ง๋ง ํ์ดํ ํจ์๊ฐ ๋๋ฐ์ด๋ค. ์ด๋ฐ๊ฒ ์์๋..
๋ถ์ ๋ ๋ชจ๋ฅด๋ฉด ํํํ๋ ๋ฐฐ์ด ํจ์ 10๊ฐ์ง ์ธ๋ฐ, ์์์ ๋ฉ์ถฐ ๋๊ณ ์ค์ค๋ก ์ฐพ์์ ๋จผ์ ํ๊ณ ์์์ ๋ณด๋ฉด์ ๊ณต๋ถํด๋ณด๋ ๊ธ์์ผ๋ ๋ฉํ์ด ํธ๋ ธ๋ ์ด์ ๋ฅผ ์ ์คํ ๊นจ๋ซ๊ฒ ํด์ฃผ์๋ค.
๋ฌธ์ ๋ฅผ ์์ดํจ๋ ๋ ธํ๋น๋ฆฌํฐ๋ก ์ฎ๊ธด๋ค์, ๋น ์ฝ์ ์ฐฝ์ ํ๋ ์ด๊ณ ํ๋์ฉ ํ์๋ค. ํ๊ธฐ๋ ํ๋ฉด ์์์ ์ ๋ ๋ด์ฉ์ด ๋๋ก ์ ๋ฌ๋๋๊ฑฐ ๊ฐ์์ (๋์ด์ง).. ํ๊ธฐ๋..
https://youtu.be/3CUjtKJ7PJg ๋งํฌ๋ ์์~
์ฃผ์ด์ง ๋ฐฐ์ด์ string ์ผ๋ก ๋ณํํ๋ค. ๋ฐฐ์ด.join() ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
{
const fruits = ['apple', 'banana', 'orange']
fruits.join('. ')
;('apple, banana, orange')
}
join api ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด ํํ๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ ์ฃผ๋๋ฐ ์ฃผ์ํ ์ ์ fruits ์ ๋ฐฐ์ด ํํ๋ ๊ทธ๋๋ก ๋ผ๋ ๊ฒ์ด๋ค.
์ด๋ฒ์ ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ณํํด ๋ณธ๋ค.
{
const fruits = '๐, ๐ฅ, ๐, ๐'
fruits.split(',') // fruits.split() ํ๋ฉด ๋ฐ์ดํ๊ฐ ๋ถ์ง๋ง ์์๊ฐ ์ ์ฒด ํ๋๋ก ์ทจ๊ธ๋๋ค.
;['๐', ' ๐ฅ', ' ๐', ' ๐']
fruits.split(',', 2)
;['๐', ' ๐ฅ'] // limit ์ธ์๋ฅผ 2๋ก ๋ฃ์ด์ฃผ๋ ์์ 2๊ฐ๋ง ๋ฐํ๋๋ค. (optional)
}
๋ฐฐ์ด์ ๋ก๊พธ๊ฑฐ ๋ฐ๊พธ๋ ๋ฐฉ์์ด๋ค. (ใ ใ ใ ใ )
{
const array = [1, 2, 3, 4, 5]
array.reverse()
console.log(array)
;[5, 4, 3, 2, 1]
}
์๋ ์ฃผ์ํด์ผ ํ ๊ฒ ์๋ณธ array ๊ฐ ๋ค์งํ ์ฑ๋ก ๋ฐ๋์ด ๋ฒ๋ฆฐ๋ค. ๋ฆฌํด๋ ๋ฐ๋ ๊ฑฐ ์์ฒด๋ฅผ ๋ฆฌํดํ๋ค.
๋ฐฐ์ด์ ์์ 1, 2 ๋ฅผ ์ ์ธํ ๋๋จธ์ง๋ฅผ ํฌํจํ ์๋ก์ด ๋ฐฐ์ด ๋ง๋ค๊ธฐ์ด๋ค. ๋๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
{
const array = [1, 2, 3, 4, 5]
let newArr = array.splice(2)
console.log(newArr)
;[3, 4, 5]
// array ๋ [1, 2] ๋ก ์๋ณธ์ด ๋ฐ๋์ด ๋ฒ๋ฆฐ๋ค.
}
{
const array = [1, 2, 3, 4, 5]
let newArr2 = array.slice(2)
console.log(newArr)
;[3, 4, 5]
// array ๋ [1, 2, 3, 4, 5] ๋ก ์๋ณธ์ด ๊ทธ๋๋ก ์๋ค.
}
class Student {
constructor(name, age, enrolled, score) {
this.name = name
this.age = age
this.enrolled = enrolled
this.score = score
}
}
const students = [
new Student('A', 29, true, 45),
new Student('B', 28, false, 80),
new Student('C', 30, true, 90),
new Student('D', 40, false, 66),
new Student('E', 18, true, 88),
]
์ฌ๊ธฐ์ ๋น๋ก์ ๊ทธ ์ด์ผ๊ธฐ๊ฐ ์์๋๋ค.
ํ์์ ์ ์๊ฐ 90์ ์ธ ํ์ ์ฐพ๊ธฐ ์ด๋ค. ์ฒ์์ ์? ์ ๊ธฐ์๋๋ฐ? ๋ฉ์ฒญํ ์๊ฐ์ ํ๋ค. ์ฌ๊ธฐ์ ๋๋ ๋ฌธ์ ์ ์๋ ์๋์ ๋ค๋ฅด๊ฒ filter ๋ฅผ ๊ฒ์ํด ๋ณด๊ณ ์ฌ์ฉํ๊ฒ ๋์๋ค.
์ฌ๊ธฐ์ ํ์ดํ ํจ์๊ฐ ์ค์ง๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
๋ฐค์ด ์ด๋์ ์ง์ ๊ฐ๋ ค๊ณ ํ๋๋ฐ ๋ญ๊ฐ ๋๋ ๊ฑฐ ๊ฐ์ ์ ์ข์๋ค.
const result = students.filter(student => student.score === 90);
console.log(result);
[Student]
0: Student {name: "C", age: 30, enrolled: true, score: 90}
length: 1
__proto__: Array(0)
์ด ๋ฐฉ๋ฒ๋ ์ข์์ง๋ง ์์์์ ๋๋ฆผ์ฝ๋ฉ ์๋ฆฌ ์ ์๋๊ป์ find ํจ์์ ๋ํด ์๋ ค ์ฃผ์ จ๋ค.
const result = students.find(function(student) {
return student.score === 90 // .find ์ ์ฝ๋ฐฑํจ์๋ Boolean ์ ๋ฆฌํดํ๋ค.
}) // ์ฝ๋ฐฑํจ์๋ฅผ ํตํด ํ์์ ์์ ํ๋ํ๋๋ฅผ ๋๋ฉด์ ์กฐ๊ฑด์ด true ๋๊น์ง ์ฐพ๋๋ค.
// ์ฐพ์ผ๋ฉด (true ๊ฐ ๋ฆฌํด๋ ๋), find ํจ์๊ฐ ๋ฉ์ถ๊ณ ํด๋น ์กฐ๊ฑด์ student ๊ฐ ๋ฆฌํด๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ํ์ดํ ํจ์๋ก ํ ์ค๋ก ํํ์ด ๋๋ค!
const result = students.find(student => student.score === 90)
ํ์ดํ ํจ์ ๋๋ฌด ์ข๋ค!๐
ํ์๋ค ์ค ์์ ์ ๋ฑ๋กํ (enrolled) ํ์๋ค๋ง ๊ณจ๋ผ๋ด ๋ณธ๋ค. ์ฌ๊ธฐ์ filter ํจ์๋ฅผ ์ ์ฉํ๋ค.
const result = students.filter(student => student.enrolled === true);
console.log(result);
(3) [Student, Student, Student]
0: Student {name: "A", age: 29, enrolled: true, score: 45}
1: Student {name: "C", age: 30, enrolled: true, score: 90}
2: Student {name: "E", age: 18, enrolled: true, score: 88}
length: 3
__proto__: Array(0)
๋ฐฐ์ด ์ธ ๊ฐ๊ฐ ํ์ด๋์ค๊ณ , student.enrolled ์ ๊ฐ์ด true ์ธ ๊ฒ๋ค์ ํ์ธํ ์ ์๋ค. const result = students.filter(student => student.enrolled); true ๋ฅผ ๊ตณ์ด ์ ์ง ์์๋ ๋์๋ค.
// result should be: [45, 80, 90, 66, 88]
ํ์๋ค์ ์ ์๋ง ์์ ๋ฝ์์จ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์์ ๋ ๊ธ์์ผ ์ฌ๋์์ ๊ณต์ ๋ ์ฌ์ง ํ์ฅ์ด ๋ ์ฌ๋๋ค.
์์ ๋ฝ์์จ ๋ฐฐ์ด์ ๋ง๋ ๋ค.. ๋ง๋ ๋ค.. ๊ฐ๊ณตํ๋ค.. ๊ทธ๋ ๋ค! map!
const result = students.map(student => student.score);
console.log(result);
(5) [45, 80, 90, 66, 88]
0: 45
1: 80
2: 90
3: 66
4: 88
length: 5
__proto__: Array(0)
map ์ ๊ทธ๋ฌ๋๊น ๋ฐฐ์ด ์์ ์๋ ์์ ํ๊ฐ์ง ํ๊ฐ์ง๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณํ (mapping) ์์ผ ์ค๋ค. ์ฆ ์ฝ๋ฐฑํจ์๋ฅผ ํตํด ๊ฐ๊ณต๋๋ ๊ฒ์ด๋ค.
ํ์๋ค์ ์ ์๊ฐ 50์ ๋ณด๋ค ์๋์ธ ํ์์ด ์๋์ง, ์์ผ๋ฉด true ๋ฅผ ๋ฆฌํดํ๊ฒ ํ๊ธฐ ์ด๋ค.
๋๋ ์๊น ํ๋ .find ๋ฅผ ์จ์,
let result = students.find(student => student.score < 50)
console.log(result);
Student {name: "A", age: 29, enrolled: true, score: 45}
๋๋ฆผ์ฝ๋ฉ์๋ฆฌ ์ ์๋์ some ์ด๋ ์๋ก์ด ํจ์๋ฅผ ์๋ ค์ฃผ์ จ๋ค.
let result = students.some(student => student.score < 50)
console.log(result)
true
์์ฒ๋ผ .some ์ ์ฌ์ฉํ๋ฉด student ์์๋ฅผ ํ๋์ฉ ๋๋ฉด์ ํ๋๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๊ฐ ์์ผ๋ฉด true ๋ฅผ ๋ฆฌํดํ๋ค.
๋ฐ๋๋ .every ๊ฐ ์๋ค.
let result = students.every(student => student.score < 50)
console.log(result)
false
์์ every ๋ ๋ชจ๋ student ์์๊ฐ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ true ๋ฅผ ๋ฆฌํดํ๋ค.
ํ์๋ค์ ์ ์๋ฅผ ๊ฐ์ ธ์ ํ๊ท ์ ์ ๊ตฌํด์ค๊ธฐ ์ด๋ค. ์ด๊ฑด ์ฒซ๋ฒ์งธ๋ก ์ ์๋ง์ ์์ ๋ฝ์ โ์ฌ๊ฐ๊ณตโ ๋ ๋ฐฐ์ด์ ๊ฐ์ ธ์ค๋๊ฒ ๋จผ์ ์ด๋ค.
let scoreOfStudents = students.map(student => student.score)
// ํ์๋ค์ ์ ์๋ง ๋ฝ์์จ ์์๊ฐ ๋ฐฐ์ด์ ์ค๋ ค scoreOfStudents ๋ณ์์ ๋ด๊ฒผ๋ค.
์ด์ reduce() ํจ์๋ฅผ ์ฌ์ฉํ ์ฐจ๋ก๋ค. ์์์ ๋ฉ์ถฐ ๋๊ณ ์ฐพ์๋ดค๋๋ฐ mdn ์ ์ฌ์ฉ๋ฒ์ด ์ฝ๊ฐ ์ด๋ ต๊ฒ ๋๊ปด์ ธ์ ์์๋ฅผ ์ฐธ๊ณ ํ ๋งํ ๋ธ๋ก๊ทธ๋ฅผ ์ฐพ์๋ณด๊ณ ๊ทธ๊ฑฐ๋๋ก ์ฝ์์ ์ฎ๊ฒจ๋ดค๋ค.
let scoreOfStudents = students.map(student => student.score)
let result = scoreOfStudents.reduce((acc, curr) => acc + curr) / students.length
console.log(result)
// acc ๋ ์ด์ ์ ๊ฐ(์ถ์ ๋๋ ๊ฐ), curr ๋ ๋ฐ๋ณต์ ๋๋ ํ์ฌ student ์ ์์, ์๋์ฒ๋ผ ์์์ง์ ์ 0์ผ๋ก ํ์ํด์ค ์ ์๋ค.
// scoreOfStudents.reduce((acc, curr) => (acc + curr), 0) / students.length
73.8
๋ฐฐ์ด์ ์์๋ค์ ๋ชจ์ ๋์ ํด ๋์ ๋ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
// result should be: โ45, 80, 90, 66, 88โ ํ์๋ค์ ๋ชจ๋ ์ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ ์ด๋ค.
let scoreOfStudents = students.map(student => student.score)
// map ๊ณผ join ์ฌ์ด์ filter ๋ฅผ ์จ์ ์ ์๊ฐ 50์ ์ด์์ธ ์ ๋ค๋ง ์ถ๋ ค๋ผ ์๋ ์๋ค.
let result = scoreOfStudents.join(', ')
// result should be: โ45, 66, 80, 88, 90โ ํ์๋ค์ ์ ์๋ฅผ ๋ฎ์ ์์๋๋ก ์ ๋ ฌํ ๋ค, ๋ฌธ์์ด๋ก ๋ณํํ๊ธฐ ์ด๋ค.
let scoreOfStudents = students.map(student => student.score)
let sortBy = scoreOfStudents.sort((a, b) => a - b)
console.log(sortBy)
;(5)[(45, 66, 80, 88, 90)]
sortBy.join(', ')
;('45, 66, 80, 88, 90')
์์ผ๋ก ์์ดํจ๋์ ํ๊ธฐ๋ ํด๋ณด๊ณ , ์ฝ์์ฐฝ์ ์ฐ์ด ๋ณด๊ธฐ๋ ํ๋ฉด์ ์ ํ๋ธ์์ ๊ฐ์๋ฅผ ๋ฃ๊ฒ ๋๊ธฐ ์ ๊ณผ ๋ง์ด ๋ฌ๋ผ์ง ๊ฑฐ ๊ฐ๋ค. ์ผ๋จ ์ด๋ฌํ ์์์ ๋ณผ ์ ์๊ฒ ๋์์ค ๋์ ํ์ด๋ (์ฌํ๋) ์๊ฒ ์ง์ฌ ๊ฐ์ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ฆผ์ฝ๋ฉ ์๋ฆฌ ๋์ ํฌ์ด ๋์ด ๋ฒ๋ ธ๋ค.
์์ง ์ฝํ์ ๋ฌธ์ ๋ ํ์ง ๋ชปํ์ง๋ง ์ถ์ ๋ ๋ญ๊ฐ ํด๋ณผ ์ ์์ ๊ฑฐ ๊ฐ๋ค๋ ์์ ๊ฐ์ด ์๊ฒผ๋ค.