์ฐธ์กฐํ ๋ฐ์ดํฐ ํ์
์ ํ ์ข
๋ฅ
์ฌ๋ฌ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ค๊ดํธ { } ์์ ๋ฌถ์์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ถ๋ ์ ๋, ์์๋๋ก ๊ฐ์ด ๋์ค์ง ์๋๋ค
๊ฐ์ฒด๋ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ๊ณ ์ฐ๊ฒฐ์ ์ํด ์ฌ์ฉ, ์ ์ฅํ๊ธฐ ์ํ ๊ตฌ์กฐ๋ก ์ฝ๋์ ์ ์ง๋ณด์๊ฐ ์ฉ์ด
let obj = { key: value, key1:value2 }
' obj ' ์ด๋ผ๋ ๊ฐ์ฒด์๋ ' key '์ ' key '์ ํด๋นํ๋ ๋ฐ์ดํฐ์ธ ' value '๊ฐ ์๋ค.
' key '์ ' value ' ์์ผ๋ก ๊ตฌ์ฑ๋์ด ํ๋กํผํฐ (' property ') ๋ผ๊ณ ํ๋ค.
' key '๋ฅผ ์ด์ฉํด์ ' value ' ์ ์ ๊ทผํ๋ค.
'์ค๊ดํธ { } ๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์ ์ธํ๋ ๊ฒ์ด '๊ฐ์ฒด ๋ฆฌํฐ๋ด (object literal) ์ด๋ผ๊ณ ํ๋ค.
๊ฐ์ฒด์ property๋ก์จ ๋ ๋ค๋ฅธ ๊ฐ์ฒด, ๋ฐฐ์ด, ์ซ์, ๋ฌธ์ ๋ค ๋ค์ด ๊ฐ ์ ์๋ค
์ฝ๋ก (:)์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์๋ key, ์ค๋ฅธ์ชฝ์๋ ๊ฐ(value)
let myself = {
name: 'Emily', // ๋ฌธ์์ด
food: { favorite: 'pork belly',
dislike: 'cilantro'}, // ๋ ๋ค๋ฅธ ๊ฐ์ฒด
color: ['red','yellow'], // ๋ฐฐ์ด
lipstick : 3 // ์ซ์
}
๊ฐ์ฒด์ ๋ฐ์ดํฐ 'value'์ ์ ๊ทผํ๋ ค๋ฉด 'key'๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทผํ๋ค. ์ ๊ทผํ๋ ๋ฐฉ์์ 2๊ฐ์ง!
์ ์ ์ด์ฉํด์ ์ ๊ทผ
๊ฐ์ฒด์ด๋ฆ.key
let myself = {
name: 'Emily', // ๋ฌธ์์ด
food: { favorite: 'pork belly',
dislike: 'cilantro'}, // ๋ ๋ค๋ฅธ ๊ฐ์ฒด
color: ['red','yellow'], // ๋ฐฐ์ด
lipstick : 3 // ์ซ์
}
console.log(myself.name) // 'Emily'
console.log(myself.food) // {favorite:"pork belly",dislike:"cilantro"}
๋๊ดํธ๋ฅผ ์ด์ฉํด์ ์ ๊ทผ
๊ฐ์ฒด์ด๋ฆ[key]
let myself = {
name: 'Emily', // ๋ฌธ์์ด
food: { favorite: 'pork belly',
dislike: 'cilantro'}, // ๋ ๋ค๋ฅธ ๊ฐ์ฒด
color: ['red','yellow'], // ๋ฐฐ์ด
lipstick : 3 // ์ซ์
}
console.log(myself['color']) // ["red","yellow"]
console.log(myself['lipstick']) // 3
๐ bracket์ผ๋ก value์ ์ ๊ทผ ํ ๋, ๋๊ดํธ์ ''๋ฅผ ์ฌ์ฉํ ์ด์ ๋ key๊ฐ string์ด๊ธฐ ๋๋ฌธ์ด๋ค.!
์ ์ ์ด์ฉํ 'DOT Notation' ์ ๊ทผ ๋ฐฉ์์ ์ซ์๋ก ๋ 'key'๋ ๋์ด์ฐ๊ธฐ๋ก ๋ key์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๋ํ, 'key'์ ๋ณ์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ ๊ทผ ๋ถ๊ฐ๋ฅ
DOT Notation์ผ๋ก ์ ๊ทผํ์ ๊ฒฝ์ฐ,
let foodscore = {
1:"worst",
3:"normal",
5:"best"}
console.log(foodscore.1) // SyntaxError
let foodType = {
'korean food':"recommend",
'japanese food': "great",
'italian food': "best" }
console.log(foodType.korean food) // SyntaxError
console.log(foodType.'korean food') // SyntaxError
๐ก๐กDot notation์ ์ซ์๋ ๋์ด์ฐ๊ธฐ๊ฐ ์๋ 'key'์๋ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ.
let foodType = {
'korean food':"recommend",
'japanese food': "great",
'italian food': "best" }
let likeType = ['korean food']
console.log(foodType.likeType)
// undefined ; Dot ๋ฐฉ์์ผ๋ก๋'undefined'
console.log(foodType[likeType])
// "recommend" ; likeType ๋ณ์์ ๋ด๊ธด 'korean food' ํค์ ๊ฐ์ด ์ถ๋ ฅ
๐ก๐ก๊ฐ์ฒด์ ์๋ 'key' ๋ฅผ ํธ์ถ ํ์ ๋ ์๋ฌ๊ฐ ๋์ง ์๊ณ ,
๊ฐ์ undefind๋ก ์ถ๋ ฅ๋๋ค. ๊ฐ์ฒด์ ์๋ 'key'๋ฅผ ํธ์ถ ํ์ ๋๋ 'value'๊ฐ ์ถ๋ ฅ
๐ ํจ์ ์์์ ๋ณ์๋ฅผ ํตํด key์ ์ ๊ทผ
function food() { let foodType = { 'korean food':"recommend", 'japanese food': "great", 'italian food': "best" } let like = foodType.favorite = "italian food" //like ๋ณ์์ Dot์ ์ด์ฉํ์ฌ foodType ๊ฐ์ฒด์ favorite ํ๋กํผํฐ ์ถ๊ฐ let myType = foodType[like]; // Dot์ ๋ณ์๊ฐ ํฌํจ๋ ํค์ ์ ๊ทผ์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ Bracket์ ์ด์ฉํ์ฌ myTypedp like ๋ณ์์ ์ ๊ทผ return myType } console.log(food()) //"best";
' foodType ' ๊ฐ์ฒด ์์์ ์ถ๊ฐ๋ ํ๋กํผํฐ ' favorite ' ์ value ๊ฐ 'italian food'์ด๊ณ ,
' italian food ' value ๊ฐ ' italian food ' key ์ ์ ๊ทผํ์ฌ ' best ' value ์ ๋ถ๋ฌ ์จ ๊ฒ์ด๋ค.
DOT ์ฌ์ฉ์ | ๊ฐ์ฒด์ด๋ฆ.ํค๊ฐ.ํค๊ฐ |
Bracket ์ฌ์ฉ์ | ๊ฐ์ฒด์ด๋ฆ [ํค๊ฐ][ํค๊ฐ] |
let color = {
red:"๋นจ๊ฐ",
blue:{ lightblue: "์ฐํ๋",
darkblue: "์งํ๋" },
yellow:"๋
ธ๋"
}
console.log(color.blue.lightblue) // "์ฐํ๋"
console.log(color['blue']['lightblue']) // "์งํ๋"
DOT ์ฌ์ฉ์ | ๊ฐ์ฒด์ด๋ฆ.ํค๊ฐ[indext] |
Bracket ์ฌ์ฉ์ | ๊ฐ์ฒด์ด๋ฆ [ํค๊ฐ][index][index] |
let family = {
cousin: ['์ด๋ชจ','๊ณ ๋ชจ','์ผ์ด','์น์ฒ๋์'],
myFamily: ['์๋ง','์๋น ','๋์',['ํ ๋จธ๋','ํ ์๋ฒ์ง']]
}
console.log(family.cousin[2]) // "์ผ์ด"
console.log(family.myFamily[3][1]) // "ํ ์๋ฒ์ง"
console.log(family['myFamily'][3][0]) // "ํ ๋จธ๋"
๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ ๋๋ ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ๊ผญ "" ๋ฌธ์์ด ํ์๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค
let workout = {
exercise : '์์',
time : '7:00 AM'}
workout.teacher = 'No'
console.log(workout) // {exercise:"์์", teacher:"No", time:"7:00 AM"}
๊ฐ์ฒด์ด๋ฆ์ ์์ ํ๋ ค๋ value์ key๋ฅผ ๊ฐ์ ธ์์ ์์ ๊ฐ์ ๊ธฐ์
let zoo = {
elephant:50,
lion:30,
sparrow:24,
giraffe:45
};
zoo.sparrow = 20; // Dot ๋ฐฉ์
zoo['sparrow'] = 20; // Bracket ๋ฐฉ์
console.log(zoo) // {elephant:50, giraffe:45, lion:30, sparrow:20}
๊ฐ์ฒด๋ฅผ ์ญ์ ํ ๋๋ delete ๋ผ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
let shoppingCart = {
์ฐธ์น : '๊ณ ์ถ์ฐธ์น',
๋ฌ๊ฑ : '30๊ตฌ',
์๊ธ์น : '1๋จ',
์์ธ์ง : 1,
ํ : '์คํธ',
ํ ๋งํ : 5}
delete shoppingCart.sausage // Dot ๋ฐฉ์
delete shoppingCart['sausage'] // Bracket ๋ฐฉ์
console.log(shoppingCart) // {๋ฌ๊ฑ:"30๊ตฌ", ์๊ธ์น:"1๋จ",์ฐธ์น:"๊ณ ์ถ์ฐธ์น",ํ ๋งํ :5,ํ:์คํธ}
์กด์ฌํ์ง ์์ ํ๋กํฐํผ์ ๋ํด undefined๊ฐ ๋์จ๋ค. ์ด ์ ์ ํ์ฉํด ํ๋กํผํฐ ์กด์ฌ์ฌ๋ถ ํ์ธ ๊ฐ๋ฅ
"Key" in ๊ฐ์ฒด
let deskItem = {
๋์ฅ๊ณ :"์์์ ์ฅ๊ณ ",
์ท์ฅ:"์ท์ ์ฅ๊ณ "
}
console.log("๋์ฅ๊ณ " in deskItem); // true ; ํด๋น key๊ฐ ๊ฐ์ฒด์ ์กด์ฌํจ์ผ๋ก true ๊ฐ ๋ฐํ
console.log("ํ์ฅ๋" in deskItem); // false ; ํด๋น key๊ฐ ๊ฐ์ฒด์ ์์์ผ๋ก false ๊ฐ ๋ฐํ
๊ฐ์ฒด ์์ key ๊ฐ์ ์ ์ ์๋ค.
๋ฐ๋ณต๋ฌธ์์ ์ด๋ฏธ ์ธ๊ธํ ๋ด์ฉ์ด์ง๋ง ๋ค์ ํ๋ฒ ๋ณต์ต!
๊ฐ์ฒด์ for in ๋ฐ๋ณต๋ฌธ
let score = { math: 20, music: 30, english:10 } for (key in score){ console.log(key) } // math, music, english ; score ๊ฐ์ฒด ์์ ํค๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค. for (key in score){ console.log(score[key]) } // 20,30,10 ; score ๊ฐ์ฒด์ ํค์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
๋ฐฐ์ด์ for in ๋ฐ๋ณต๋ฌธ
let arr = ['๊ฐ','๋','๋ค']; for (let name in arr){ console.log(name) } // 0,1,2 arr ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ ธ์จ๋ค. for (let name in arr){ console.log(arr[name]) } // ๊ฐ,๋,๋ค ๋ฐฐ์ด์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
๊ฐ์ฒด์๋ key ์ value ๊ฐ ํ ์์ผ๋ก ๋ฌถ์ธ ํ๋กํผํฐ๊ฐ ์๋๋ฐ, value ์์ ๋ ๋ค๋ฅธ ๊ฐ์ฒด, ๋ฐฐ์ด, ์ซ์ ๋ฑ๋ฑ ๋ค์ด ๊ฐ ์ ์๋๋ค.
์ฌ๊ธฐ์ value ์์ "ํจ์"๋ ๋ค์ด๊ฐ ์๊ฐ ์๋ค. ์ด๋ฌํ ๊ฒ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ๋ค
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ด๋, ์๋ก๊ฐ ์ฐ๊ด๋์ด ์๋ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ(๊ธฐ๋ฅ)์ ํ๋์ ๊ฐ์ฒด ์์ ๊ทธ๋ฃนํ ํ ํ๋ก๊ทธ๋จ
let foodScore = {
์ผ๊ฒน์ด : 100,
์ค์ง์ด๋ณถ์ : 90,
๋งค์ด๊ฐ๋น์ฐ : 95,
๊ณฑ์ฐฝ๋ณถ์ : 150,
ํ๊ตญ์์ : function (){
console.log('๋ง์์ด์')}
}
foodScore['ํ๊ตญ์์'](); // ๋ง์์ด์
fucntion์ ์์ ํ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ์ ํด์ง ๋ณ์
let foodScore = {
์ผ๊ฒน์ด : 100,
์ค์ง์ด๋ณถ์ : 90,
๋งค์ด๊ฐ๋น์ฐ : 95,
๊ณฑ์ฐฝ๋ณถ์ : 150,
ํ๊ตญ์์ : function (){
console.log(this.์ค์ง์ด๋ณถ์)}
}
foodScore['ํ๊ตญ์์'](); // 90
/* 'ํ๊ตญ์์'์ด๋ผ๋ ํค ๊ฐ์ ์๋ ํจ์์ 'this'๋ 'foodSCore' ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ณ ,
๊ฐ์ฒด ์์ ์๋ '์ค์ง์ด๋ณถ์' ํค์ ๊ฐ์ ํธ์ถํ์ฌ '90' ์ด๋ผ๋ value๊ฐ ๋์จ ๊ฒ์ด๋ค. */
'this' ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ฐ์ฒด์ ์ด๋ฆ์ ์์ ํด์ผํ๋ ๊ฒฝ์ฐ, ๊ฐ์ฒด์ด๋ฆ์ ์ผ์ผํ ์์ ํ ํ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์์ฉ
let foodScore = { collection: {์ผ๊ฒน์ด : 100, ์ค์ง์ด๋ณถ์ : 90, ๋งค์ด๊ฐ๋น์ฐ : 95} , ํ๊ตญ์์ : function (){ for (key in this.collection){ console.log(key, this.collection[key]) }} } foodScore.ํ๊ตญ์์(); // ์ผ๊ฒน์ด 100, ์ค์ง์ด๋ณถ์ 90, ๋งค์ด๊ฐ๋น์ฐ 95
๋ฐฐ์ด๊ณผ ๊ฐ์ ์ .
์ฌ๋ฌ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋ฌถ์์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ค์ํ ๊ธฐ๋ฅ์ด ์๋ค.
๋ฐฐ์ด๊ณผ ๋ค๋ฅธ ์ .
๋ฐฐ์ด์ ๋๊ดํธ [ ] ๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ฐ์ฒด๋ ์ค๊ดํธ { } ๋ฅผ ์ฌ์ฉ
๋ฐฐ์ด์ ์์๊ฐ ์๋ ๊ฐ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ์ ํธ์ถ ํ ์ ์๊ณ , ๋ฐฐ์ด์ ๊ฐ์ด ์์๋๋ก ์ถ๋ ฅ.
๊ทธ๋ฌ๋ ๊ฐ์ฒด๋ ์์์ ์๊ด์์ด ๊ฐ์ด ์ถ๋ ฅ๋๊ณ , ๋ฐ๋ผ์ ์ธ๋ฑ์ค ๊ฐ์ด ์๋ค.
๋ ๋ค ๋ฐ์ดํฐ๋ฅผ ํ ๊ณณ์ ๋ด์๋๋ ์ปจํ
์ด๋ ์ญํ ์ ํ์ง๋ง
๋ฐฐ์ด ๋ด์ ์์๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ํธ์ถ๋์ง๋ง, ๋ง์ฝ ์๋ง์ ๋ฐ์ดํฐ๋ค์ด ์์ด ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ฅด๋ ์ํ๋ผ๋ฉด,
์ํ๋ ์์์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ปดํจํฐ๊ฐ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํด์ผ ํ๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ฒด๋ ๋ถํน์ ๋ฐ์ดํฐ์ ๊ด๋ จ์ ๋ณด๋ฅผ ์ ๋ฆฌํ์ฌ ์ฐ๊ฒฐํ๋๋ฐ์ ์ฉ์ดํ๊ณ , ํค๋ฅผ ํตํด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ฐ์๋ ์ฝ๋ค.
๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋ฉด ์ฝ๋๋ ๋ณต์กํด์ง๋๋ฐ ๊ฐ์ฒด๋ฅผ ํ์ฉํจ์ผ๋ก์จ ์ฝ๋์ ์ ์ง๋ณด์๊ฐ ์์ํ๋ค.