๐ฅ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๋ฌธ์ ํ์ด
ํ์ต ๋ชฉํ
๊ฐ์ฒด์ key์ value์ ์ ๊ทผํ๊ณ ๊ฐ๊ณตํ ์ ์๋ค. ๋ฉ์๋๋ฅผ ์ด์ฉํด ๊ฐ์ฒด ์์ ํ๋กํผํฐ๋ค์ ์ํํ ์ ์๋ค.
๊ฐ์ฒด์ ์ํ
๊ฐ์ฒด ์ ๋ด์ฉ๋ฌผ๋ ๋ฐฐ์ด์ฒ๋ผ ์ฒ์๋ถํฐ ๋๊น์ง ์ํํ ์ ์๋ค! ๋ค๋ง ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ, ์ํํ ๋ ์ ํด์ง ์์๋ ์๋ค.
Object.keys ๋ฉ์๋
Object.keys() ๋ฉ์๋๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํค๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๋ ๋ฉ์๋์ด๋ค.
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
obj๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ํํ๊ธฐ ์ํด .keys๋ฉ์๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
Object.keys(obj)
๋ฉ์๋ ์ฌ์ฉ์ ์ด๋ฐ ๊ฒฐ๊ณผ๋ฌผ์ด ์ถ๋ ฅ๋๋ค!
['name', 'weight', 'price', 'isFresh']
๊ฐ์ฒด ์ ํ๋กํผํฐ์ key๋ค์ ๋ฐฐ์ด๋ก ๋ฉ์ง๊ฒ ๋ฆฌํดํ๊ฒ์ด๋ค!
const keys = Object.keys(obj)
//obj์ key๋ค์ ์ํํด์ ๋ง๋ ๋ฐฐ์ด์ keys๋ผ๋ ๋ณ์์ ์ ์ฅ!
for (let i = 0; i < keys.length; i++) {
//๊ทธ key๋ผ๋ ๋ณ์ ์ ์์ด๋ค์ ์ฒ์๋ถํฐ ๋๊น์ง ํ๋ ์กฐ๊ฑด์ผ๋ก ๋ฐ๋ณต๋ฌธ ์์!
const key = keys[i]
//keys ์ ๊ฐ๊ฐ์ ํค๋ฅผ key๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํ๋ค
const value = obj[key]
//obj[key]์ ๊ฐ์ ํ์์ ๊ดํธ ์ key์ value๋ฅผ ๋ฝ์๋ ์ด๋ค๊ณ ํ์์ผ๋๊น,
//์ด๊ฑด obj๊ฐ์ฒด ์ ๊ฐ๊ฐ์ key๋ค์ value๋ฅผ ์ป๋ ์ฝ๋์ธ๊ฑฐ๋ค!
//๊ทธ value๋ค์ value๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅ!
console.log(value)
}
์ ์ฝ๋์ ๊ฒฐ๊ณผ๋ก๋
'melon'
4350
16500
true`
๋ผ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ค!
์๋ฐ์คํฌ๋ฆฝํธ ES6์๋ Object.values, Object.entries ์ ๊ฐ์ ๋ฉ์๋๋ค๋ ์๋ค. Object.values๋ ๊ฐ์ฒด์ value๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ฆฌํดํ๊ณ , Object.entries๋ ๊ฐ์ฒด์ key์ value๊ฐ ๋ฐฐ์ด ํํ๋ก ๋ค์ด๊ฐ์๊ณ ๊ทธ๊ฒ์ ๊ฐ์ธ๋ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ค.
const values = Object.values(obj)
//values === ['melon', 4350, 16500, true]
const entries = Object.entries(obj)
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
//key์ value๊ฐ ๋ฐฐ์ด๋ก ๋ค์ด๊ฐ์๊ณ , ๋ ๊ทธ๊ฒ์ ๊ฐ์ธ๋ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ค๋๊ฒ์ด
์์ ๊ฐ์ ์ฝ๋๋ฅผ ๋๊ณ ํ ์๊ธฐ์ด๋ค!
for-in๋ฌธ
๊ฐ์ฒด๋ฅผ ์ํํ ๋ ์ฐ์ด๋ JS ES6์ ๋ฌธ๋ฒ์ด๋ค. ๊ฐ์ฒด ๋ง๊ณ ๋ ๋ฐฐ์ด์ ์ํํ ๋๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
const arr = ['coconut', 'banana', 'pepper', 'coriander']
for (let i = 0; i < arr.length; i ++) {
console.log(i)
console.log(arr[i])
}
์๋๊ฐ์ผ๋ฉด ๋ด์ฉ๋ฌผ์ ์ฒ์๋ถํฐ ๋๊น์ง ์ํํ๋ for๋ฌธ์ ์์ ๊ฐ์ด ์์ฑํ์ํ
๋ฐ,
let i = 0; i < arr.length; i ++
๋ถ๋ถ์ ์ถ์ฝํ๊ณ ์๋ ๋ฌธ๋ฒ์ด for-in๋ฌธ์ด๋ค.
์ for๋ฌธ ์ฝ๋๋ ์๋ ์ฝ๋์ฒ๋ผ ๋ฐ๊ฟ์ธ ์ ์๋ค.
for (let i in arr) {
console.log(i)
console.log(arr[i])
}
๋๊ฐ์ง ์ฝ๋ ๋ชจ๋
0
1
2
3
'coconut'
'banana'
'pepper'
'coriander'
๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
for in๋ฌธ์ ๊ฐ์ฒด์์๋ ์๋ํ๋ค!
๊ฐ์ฒด์์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
for (let key in obj) {
//obj๊ฐ์ฒด ์์ key๋ค์ key๋ผ๊ณ ์ด๋ฆ๋ถ์ด๋ for in๋ฌธ!
const value = obj[key]
//value๋ผ๋ ๋ณ์ ์์ obj์ key์ ๋ํ value๊ฐ๋ค์ ์ ์ฅํด์ค
console.log(key)
//์ด๋ ๊ฒํ๋ฉด key๊ฐ๋ค์ด ๋์ค๊ณ
console.log(value)
//์ด๋ ๊ฒํ๋ฉด key๊ฐ์ ๋ํ value๊ฐ๋ค์ด ๋์จ๋ค!
}
Assignment
์๋ ์ค๋ช ์ ์ฝ๊ณ getExamResult ํจ์๋ฅผ ๊ตฌํํ์ธ์.
์ธ์ scores ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด์ ๋๋ค. ๊ฐ์ฒด์ ์์์ ๊ฐฏ์ ๋ฐ ํค์ ์ด๋ฆ๋ค์ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ๊ฐ์ฒด์ ๊ฐ์ ๋ค์ 9๊ฐ์ง ๋ฌธ์์ด ์ค์์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
'A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F'
{
'์ํ์์ํ๊ณ': 'C',
'๋ ผ๋ฆฌ์ ๊ธ์ฐ๊ธฐ': 'B',
'๋ ์ผ๋ฌธํ์์ดํด': 'B+',
'๊ธฐ์ด์ํ': 'D+',
'์์ดํํ': 'C+',
'์ธ์ง๋ฐ๋ฌ์ฌ๋ฆฌํ': 'A+',
}
์ธ์ requiredClasses ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์์ด๋ก ๋ ๋ฐฐ์ด์ ๋๋ค.
['์์ดํํ', '๊ธฐ์ด์ํ', '๊ณตํ์ํ', '์ปดํจํฐ๊ณผํ๊ฐ๋ก ']
๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋๋ก ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
scores ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํค๋ค์ ์๋ก์ด ๊ฐ์ฒด์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๋จ, ๊ทธ ๊ฐ๋ค์ ๋ค์ ์๋ฆฌ์ ๋ฐ๋ผ ์ซ์๋ก ๋ฐ๋์ด ํ ๋น๋์ด์ผ ํฉ๋๋ค.
A+ => 4.5
A => 4
B+ => 3.5
B => 3
C+ => 2.5
C => 2
D+ => 1.5
D => 1
F => 0
requiredClasses ๋ฐฐ์ด์ ์์๋ก๋ ์กด์ฌํ์ง๋ง, scores์ ํค๋ก๋ ์กด์ฌํ์ง ์๋ ํญ๋ชฉ์ด ์๋ค๋ฉด, ํด๋น ์์๋ ์๋ก์ด ๊ฐ์ฒด์ ํค๊ฐ ๋๊ณ , ๊ฐ์ผ๋ก 0์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ์์์ ์์๋ก ๋ฌ์ฌ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ด ์ธ์๋ก ๋ค์ด์๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ฆฌํด๋ฉ๋๋ค. ์์๊ฐ ์์๋ ๋ค๋ฅผ์ ์์ง๋ง, ์ฑ์ ์ ๋ฌด๊ดํฉ๋๋ค.
{
'์ํ์์ํ๊ณ': 2,
'๋ ผ๋ฆฌ์ ๊ธ์ฐ๊ธฐ': 3,
'๋ ์ผ๋ฌธํ์์ดํด': 3.5,
'๊ธฐ์ด์ํ': 1.5,
'์์ดํํ': 2.5,
'์ธ์ง๋ฐ๋ฌ์ฌ๋ฆฌํ': 4.5,
'๊ณตํ์ํ': 0,
'์ปดํจํฐ๊ณผํ๊ฐ๋ก ': 0,
}
๋์ ๋ต์
function getExamResult(scores, requiredClasses){
//์ ์ํด์ค ๋๊ฐ์ง ์ธ์๋ฅผ ๋ฐ๋ ํจ์๋ฅผ ์ ์ธํ์!
let result = {};
์ต์ข
์ ์ผ๋ก returnํ ๊ฐ์ฒด๋ฅผ ์ ์ธ!
const convertScores = {
//์ํ๋ฒณ์ ์๋ฅผ ์ซ์ ์ ์๋ก ๋์น์ํค๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ๊ณ
//์์ ์๋์ ๊ฐ์ด ๋ด์ฉ๋ฌผ์ ๋ฃ๋๋ค!
"A+" : 4.5,
"A" : 4,
"B+" : 3.5,
"B" : 3,
"C+" : 2.5,
"C" : 2,
"D+" : 1.5,
"D" : 1,
"F" : 0
};
for(let i in scores){
//for in๋ฌธ์ ์ฌ์ฉํด์ ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ฐ์ scores๋ฅผ ์ํํ ๊ฒ์ด๋ค.
result[i] = convertScores[scores[i]]
//result๊ฐ์ฒด์ key๊ฐ์๋ i๋ฅผ ํ ๋นํด์ฃผ๊ณ
//value๊ฐ์๋ convertScores๊ฐ์ฒด ์
scores์ value๊ฐ๊ณผ ๊ฐ์ ๊ฐ์ value์ ํ ๋นํด์ค๋ค.
//์ด ๋ถ๋ถ์๋ํ ๋ถ๊ฐ์ค๋ช
์ ํฌ์คํ
๋งจ ์๋์์ ์ด์ด์ ํ๊ฒ ๋ค!
}
requiredClasses.forEach((el) => {
//๋๋ฒ์งธ ์ธ์๋ก ๋ค์ด์ค๋ ํ์ํฌํจ๊ณผ๋ชฉ๋ค์ forEach๋ก ์ํํด๋ณผ๊ฒ์ด๋ค.
//์ถ๊ฐ๊ณผ๋ชฉ ๋ฐฐ์ด ์ ์์ด๋ค์ el์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ถ๋ฌ์ผ์ง!
if(result[el] === undefined){
//๋ง์ฝ result๊ฐ์ฒด์ el์ด๋ผ๋ ๊ฐ์ด undefined๋ผ๋ฉด
result[el] = 0
//result๊ฐ์ฒด์ el์ด๋ผ๋ ๋ณ์์ด๋ฆ์ผ๋ก key๋ฅผ ์์ฑํ๊ณ ํด๋น value๋ 0์ผ๋ก ์ค!
}
})
return result;
}
const exScores = {
//score๋ผ๋ ์ธ์์ ์๋ฒ์ผ๋ก ๋ค์ด๊ฐ exScores๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ฃ!
'์ํ์์ํ๊ณ': 'C',
'๋
ผ๋ฆฌ์ ๊ธ์ฐ๊ธฐ': 'B',
'๋
์ผ๋ฌธํ์์ดํด': 'B+',
'๊ธฐ์ด์ํ': 'D+',
'์์ดํํ': 'C+',
'์ธ์ง๋ฐ๋ฌ์ฌ๋ฆฌํ': 'A+',
}
const exRe = ['์์ดํํ', '๊ธฐ์ด์ํ', '๊ณตํ์ํ', '์ปดํจํฐ๊ณผํ๊ฐ๋ก '];
//๋๋ฒ์งธ requiredClasses ์ธ์์ ์๋ฒ์ผ๋ก ๋ค์ด๊ฐ ๋ฐฐ์ด!
getExamResult(exScores, exRe);
//์ ์ธํด๋์ ์์๋ฐ์ดํฐ๋ค์ ์ธ์๋ก ๋ฃ์ด์ค ํจ์๋ฅผ ์คํ์ํค๊ธฐ!
์ค๊ฐ์for(let i in scores)
๋ถ๋ถ์ ๋ค์ ์ดํด๋ณด์!
for(let i in scores){
result[i] = convertScores[scores[i]]
}
์ฐ๋ฆฌ๋ scores์ธ์๋ก ๋ฐ์ ๋ฐ์ดํฐ(๊ฐ์ฒด)์ value๊ฐ(์ํ๋ฒณ์ ์)๋ฅผ ์ป์ด์ผํ๊ธฐ๋๋ฌธ์ for in๋ฌธ์ ์ฌ์ฉํด์ ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ๋ฐ์ scores
๋ฅผ ์ํํ๋๊ฒ์ด๋ค!
scores[i]๋ผ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด scores๋ก ๋ฐ์ ๊ฐ์ฒด ์์ value๊ฐ๋ค์ด ํธ์ถ๋๋ค. ์ด scores์ value๊ฐ๋ค์ด ๋๊ตฌ๋? ๋ฐ๋ก๋ฐ๋ก
์ ์ํ๋ฒณ์ ์๋ค์ด๋ค!
๊ทธ๋ฌ๋ ๊ฒฐ๊ตญ convertScores[scores[i]]
๋ผ๋ ๊ฒ์
convertScores[์ํ๋ฒณ์ ์๋ค]
์ธ ์
์ด๊ณ , convertScores[์ํ๋ฒณ์ ์๋ค]
์ด๋ผ๋ ์ฝ๋๋ convertScores๊ฐ์ฒด์ key์๋ํ value๊ฐ์ ํธ์ถํ๊ฒ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก convertScores[scores[i]]๋ผ๊ณ ์ฝ๋๋ฅผ ์
๋ ฅํ๋ฉด 4.5, 4.0, 3.5 ๋ฑ์ ์ซ์ ์ ์๊ฐ ์ถ๋ ฅ๋๋๊ฒ์ด๋ค!
์ด๋ ๊ฒ ๊ฐ์ฒด๋ช
[key๋ณ์๋ช
] = value๊ฐ
๊ณต์์ ์ฌ์ฉํด์
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ returnํ๋ ์ฝ๋๋ฅผ ์งค ์ ์์๋ค!
๋ช๊ฐ์ง ํฌ์ธํธ๋ฅผ ์ง์ด๋ณด๋ฉด
1. ๋ฌธ์ ์์ ์ ์ํด์ค ์ธ์ ๋๊ฐ๋ฅผ ๋ฐ๋ ํจ์๋ฅผ ์ ๋ง๋ค์!
2. ๊ทธ๋ฆฌ๊ณ ์์๋ก ๊ทธ ๋ ์ธ์ ์๋ฆฌ์ ๋ฃ์ด ๋ณผ ๋ฐ์ดํฐ๋ ์ ๊ตฌ์ฑํด์ผํจ. ์ด๋ฆ๋ ์์๋ณด๊ธฐ ์ฝ๊ฒ!
3. ๊ฐ์ฒด๋ช
[key๋ณ์๋ช
] = value๊ฐ
๊ณต์์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ํธ๋คํ๋ ๋ฐฉ๋ฒ์ ์ ์ตํ์ ์จ๋จน์ด์ผํ๋ค.
4. ๊ธด๊ฐ๋ฏผ๊ฐ ํ ๋๋ ํ ์ค ํ ์คconsole.log
์ฐ์ด์๊ตฌ๊ฒฝํ๊ฑฐ๋ for in ๋ฌธ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ํํด๋ณธ๋ค. ๋ญ๊ฐ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง..
5. ์ผ๋จ ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ํด์ผํ ์ผ์ ์ญ์ฑ ์ ์ด๋ณด๊ณ ๊ฑฐ๊ธฐ์ ๋ ์ชผ๊ฐ๋ฉด์ ํ๋ํ๋์ฉ ํด๊ฒฐํด๋ณธ๋ค..
๊ทผ๋ฐ ์์ง๋ ๋ญ๊ฐ 100ํผ์ผํธ ์ดํดํ๊ณ ์ฐ๋ ํฌ์คํ
์ ์๋๋ค ๋ผ๋ ๋๋.. ํน์๋ ์ฝ์์ ์น ์๋ ์๊ฒ ์ง๋ง ๋๋ ์ด ๋ฌธ์ ๋ฅผ ์ผ์ฃผ์ผ ๋๊ฒ ๋ค์ฌ๋ค๋ดค๋ค. ๊ฐ์ฒด๋ฅผ ๋ณด๊ณ ์๋ค๊ฐ ๋ฐฐ์ด์ ๋ณด๋ฉด.. ์ฐธ ์ฒ์ฌ๊ฐ ๋ฐ๋ก์๊ตฌ๋ ํ๋ ์๊ฐ์ด ๋ ๋ค. ์ํํ๋๊ฒ๋ ํธ๋ค๋งํ๋๊ฒ๋ key์ value๊ฐ๋๋ฌธ์ ๋๋ฌด ํท๊ฐ๋ฆฐ๋ค. ๊ฐ์ฒด ์์ key์ value๋ฅผ ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ ๋ํ ์ด๋ป๊ฒ๋ณด๋ฉด ์์ ์ธ๊ธํ ๊ณต์์ฒ๋ผ ๊ฐ๋จํ์ง๋ง์๋ ์จ์ ์ฌ์ฉ๋ฒ
,๋๊ดํธ+๋ฐ์ดํ์ฌ์ฉ๋ฒ
,๋๊ดํธ(๋ณ์)์ฌ์ฉ๋ฒ
์ด๋ ๊ฒ ์ธ ๊ฐ์ง๋ ์์ผ๋๊น ํท๊ฐ๋ฆด ๋ง๋ ํ๋ค. ๊ฐ๊ฐ์ ์ฌ์ฉ๋ฒ์ด ์ด๋ป๊ฒ ๋ค๋ฅธ์ง์ ๋ํด์๋ ์๊ณ ์์ง๋ง ๋ง์ ์ฐ์ฌ์ง ์ฝ๋๋ฅผ ํด๋
ํ ๋๋ ๋นํฉํด์ '.....?!'์ด๋ ๊ฒ๋๋ค.. ๋ด๊ฐ ์จ๋๊ณ ๋ ๊ฐ๋ ๊ทธ๋ ๊ฒ๋๋ค.ใ
ใ
ใ
ใ
ใ
ใ
ใ
ใ
ํ์ฌ๊ฐ ์ด ๋ฌธ์ ๋ ํ๊ณ ๋์ ์๊ฐ์ด ์ง๋ ์ง๊ธ๋ ์ฐธ ๋ค์ฌ๋ค๋ณด๊ธฐ ๋ฌด์์ด ๋ฌธ์ ๋ค.. ๊ทธ๋๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ ์ณ๋ค๋ด์ผ์ง.
๋