[Js] ๊ฐ์ฒด | javascript ๊ฐ์ฒด | ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ
- -
ํด๋น ํฌ์คํ ์ "์ํ์ฝ๋ฉ"์ ์ด๊ณ ์ ๋์ ๊ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฆฐ ๊ฒ์๊ธ ์ ๋๋ค.
์์ ์ ์ธ ์ฉ๋๊ฐ ์๋, ๊ฐ์ธ ๊ณต๋ถ ์ ๋ฆฌ ๋ชฉ์ ์ผ๋ก ์ฌ๋ฆฌ๋ ๊ธ์์ ๋ฏธ๋ฆฌ ์๋ฆฝ๋๋ค.
๊ฐ์ฒด(Object)
์๋ก ์ฐ๊ด๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋ด๊ธฐ ์ํ ์ผ์ข
์ ๊ทธ๋ฆ ์ด๋ผ๋ ์ ์์ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ์ ์ฌํ ์ญํ ์ ์ง๋๋ค.
ํ์ง๋ง
์ง๊ธ๊น์ง ์ดํด๋ณธ ๋ฐฐ์ด์ ์์ดํ ์ ๋ํ ์๋ณ์๋ก ์ซ์๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฉด ๋ฐฐ์ด ์ ์ฒด์์ ์ค๋ณต๋์ง ์๋ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด์ ธ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ์ ๋ํ ์๋ณ์๊ฐ ๋๋ค.
์ด ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋ง์ฝ ์ธ๋ฑ์ค๋ก ๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๊ฐ์ฒด(dictionary)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋ค๋ฅธ ์ธ์ด์์๋ ์ฐ๊ด๋ฐฐ์ด(associative array) ๋๋ ๋งต( map), ๋์ ๋๋ฆฌ(Dictionary)๋ผ๋ ๋ฐ์ดํฐ ํ์ ์ด ๊ฐ์ฒด์ ํด๋นํ๋ค.
์ฝ๊ฒ ์๊ฐํ๋ฉด
๋ฐฐ์ด๋ก a =['a','b','c']๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด a,b,c ๊ฐ๊ฐ ์ธ๋ฑ์ค 0,1,2๋ก ๊ฒฐ์ ์ด ๋์ง๋ง
๊ฐ์ฒด์ ๊ฒฝ์ฐ a,b,c ๊ฐ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ซ์๊ฐ ์๋ ๋ค๋ฅธ ๋ฌธ์(ex : a=first, b = second ..)๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๊ฐ์ฒด์ ์์ฑ
๋ค์์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฒ์ด๋ค.
<script>
var grades = {'haeun': 10, 'admin': 6, 'root': 80}; //๊ฐ์ฒด์์ ์ธ๋ฑ์ค๋ ๋ฌธ์!
//haeun, admin, root = ์ธ๋ฑ์ค์ด๊ณ ๊ทธ ๋ค์ ๊ฐ๋ค์ ์ธ๋ฑ์ค์ ํด๋นํ๋ value์ด๋ค.
</script>
์์ ์์ ์์ haeun์ key๊ฐ ๋๊ณ , 10์ value๊ฐ ๋๋ค. ์๋๋ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด๋ค.
<script>
var grades = {};
grades['haeun'] = 10;
grades['admin'] = 6;
grades['root'] = 80;
</script>
์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค.
<script>
var grades = new Object();
grades['haeun'] = 10;
grades['admin'] = 6;
grades['root'] = 80;
</script>
๊ฐ์ฒด๋ฅผ ๋ง๋ ํ ํ์ํ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋
Object์ด๋ฆ . ์ ๊ทผํ ์ธ๋ฑ์ค (key) ๋ก ๊ฐ์ ธ์ค๋ฉด ๋๋ค.
์ ์์๋ฅผ ๋ณด๋ฉด grades.a ์ ๊ฐ์ด ์ถ๋ ฅ์ ํ์๋ค.
a+ab+abc = 10+30+50 ์ด๋ฏ๋ก ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ธฐํ๊ณ ์ถ๋ค๋ฉด
์์ ๊ฐ์ด ๊ฐ์ฒด์์ ํ์ํ ๊ฐ์ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
โผ ๊ฟ Tip
![](https://blog.kakaocdn.net/dn/mlm45/btqVIJV9onB/Lf5cXukKsnuRkbYaO8KanK/img.png)
๋๊ดํธ ์์ ๋ค์ด๊ฐ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ์กฐ์ ๊ฐ๋ฅ.
์ฆ ์ ๊ทผํ ๋ ๋ฌธ์์ด ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์
'k8805'๋ผ๋ ์ธ๋ฑ์ค์ ๊ฐ์ด 6์ผ ๋
๋ฌธ์์ด์ ํฉ์ ์ด์ฉํด์ ํ๊ธฐ ํ ์๋ ์๋ค.
๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ์ด ๋ณด์!
<script>
var grades = {'haeun':10, 'admin':20, 'root':30};
for(key in grades){
document.write("key : "+key+", value : "+grades[key]+"<br />");
}
</script>
๋ฐฐ์ด์ ์์๊ฐ ์์ง๋ง (0,1,2, ๋ฑ ๊ฐ ์๋ฆฌ์ ์์๊ฐ ์ ํด์ ธ์์)
๊ฐ์ฒด๋ key์ value๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๊ณ ์์๊ฐ ์กด์ฌํ์ง ์๋๋ค.
๋๋ฌธ์ ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ถ๋ ฅ์ ํด์ฃผ๋ฉด ๋๋ค!
๊ทธ๋์ for in ๋ฌธ์ ์ฌ์ฉํด์ผ ํ๋ค.
for์ค๊ฐ์ in์ด ์๋๋ฐ in์ ์ค์ฌ์ผ๋ก in๋ค๋ ๊ฐ์ฒด๊ฐ ์์นํ๊ณ , ์์ชฝ์๋ ๊ฐ์ฒด์ ํค ๊ฐ์ด ๋ค์ด๊ฐ๋ค.
(์ด๊ฒ์ ์ฝ์์ฌํญ์ด๋ค.)
for in ! ์๋ก์ด ๋ฐ๋ณต๋ฌธ ํํ
for ๋ฌธ์ in ๋ค์ ๋ฐ๋ผ์ค๋ ๋ฐฐ์ด์ key ๊ฐ์ in ์์ ๋ณ์ name์ ๋ด์์ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ค.๋ฐ๋ณต๋ฌธ์ด ์คํ๋ ๋ ๋ณ์ key์ ๊ฐ์ผ๋ก haeun, admin, root ๊ฐ ์์ฐจ์ ์ผ๋ก ํ ๋น๋๊ธฐ ๋๋ฌธ์
grades[key]๋ฅผ ํตํด์ ๊ฐ์ฒด์ ๊ฐ์ ์์๋ผ ์ ์๋ค.
โป ๋ฐฐ์ด ๊ฐ์ฒด ์ด๋์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๊ฐ์ฒด์๋ ๊ฐ์ฒด๋ฅผ ๋ด์์๋ ์๊ณ , ํจ์๋ ๋ด์ ์ ์๋ค.
<!DOCTYPE html>
<html>
<head>
<title>haha</title>
</head>
<body>
<script type="text/javascript">
/* ํจ์๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค ์๋ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์์ ์ ์ฅ์ด ๋ ์ ์์.
*/
var grades = {
'list' : {'haeun' : 10,'admin' : 8, 'root':80}, //๋๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๋จ. ์ฐ๊ฒฐํด์ค์ผ ํ๋ , (์ฝค๋ง) ๋นผ๋จน์ผ๋ฉด ์๋ฌ๋จ.
'show' : function(){
alert('Hello world');
}
}
alert(grades['list']['haeun']); //list์ ์ ๊ทผํ์ฌ haeun์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ์๋
//alert(grades['show']()); // ์ดํํ์ alert()๋ฅผ ๋๋ฒ ์คํ์ํด -> undefined
grades['show'](); //์ด๊ฒ ๋ง๋ ํํ
</script>
</body>
</html>
this
this ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๋ ๋ณ์์ด๋ค. (์ฝ์๋ ๋ณ์)
์ฆ ํจ์๊ฐ ์์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํจ๋ค๋ ๊ฒ์ด๋ค.
๋ค๋ฅธ ์ถ๋ ฅ๋ฒ๋ ํ์ธํด๋ณด์.
ํ๋์ ๊ฐ์ฒด๊ฐ ์๊ณ , ๊ทธ ์์ ์ด๋ ํ ๋ฐ์ดํฐ๊ฐ ์๊ณ ,(list : ...)
์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ํจ์๊ฐ ๋ค์ด์์ผ๋ฉฐ(show)
์ด๋ฅผ ํธ์ถ ํ ๋ ๊ฐ์ฒด.ํจ์(); ํ์์ผ๋ก ์ด๋ ํ ์ผ์ ์ฒ๋ฆฌ ํ ์ ์๋ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ ๊ด๋ จ์ฑ์ด ์๋ ๊ฒ๋ค์ ๊ทธ๋ฃน์ง์ด ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ๋ค.
์๋ก ์ฐ๊ด๋ ๊ฐ, ๋ฐ์ดํฐ, ์ฒ๋ฆฌ ๋ฑ์ ํ๋์ ๊ทธ๋ฆ ์์ ๋ฃ์ด ๊ทธ๋ฃนํ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ํต์ฌ์ด ๋๋ ์ฑ์ง๋ก
์ทจ์ง์ ๋ฐ๋ผ์ ๋ก์ง์ ๊ฐ์ฒด์ ๊ทธ๋ฃนํํด์ ๊ฐ์ฒด๋ผ๋ ๋ถํ์ ์กฐ๋ฆฝํด์ ์ํํธ์จ์ด๋ผ๋ ์์ ํ์ ๋ง๋ค ์ ์๊ฒ ํด์ค๋ค.
๊ฐ์ฒด ์งํฅ์ ๋ํด์๋ ๋ค์์ ์์ธํ ์ดํด๋ณธ๋ค.
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
-
[Js] UI์ API ๊ทธ๋ฆฌ๊ณ ๋ฌธ์๋ณด๋ ๋ฒ | API๋? | javascript API 2021.02.04
-
[Js] ๋ชจ๋ | ๋ชจ๋์ ์ฌ์ฉ | Node.js์์์ ๋ชจ๋์ ๋ก๋ | javascript ๋ชจ๋ | ๋ผ์ด๋ธ๋ฌ๋ฆฌ 2021.02.04
-
[Js] ๋ฐฐ์ด | javascript ๋ฐฐ์ด | ๋ฐฐ์ด์ด๋? 2021.02.03
-
[Js] ํจ์ | ํจ์์ ํ์ | ํจ์์ ์ ์์ ํธ์ถ | ์ ๋ ฅ๊ณผ ์ถ๋ ฅ 2021.02.03
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค