Section1 Unit8 [JavaScript] ๋ฐฐ์ด, ๊ฐ์ฒด - ๊ฐ์ฒด
๐ Chapter2. ๊ฐ์ฒด
• ๊ฐ์ฒด๋ ์ด๋ฆ(name)๊ณผ ๊ฐ(value)์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ(property)์ ์ ๋ ฌ๋์ง ์์ ์งํฉ.
let user = {
fristName: "Haily",
lastName: "Lee",
city: "Seoul"
};
// ๊ฐ์ฒดํ๊ธฐ๋ฒ
user.firstName // Haily → Dot notation
user["city"] // Seoul → Bracket notation
→ ๊ฐ์ฒด๋ ํค(key)์ ๊ฐ(value)์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ํค์ ๊ฐ ์ฌ์ด๋ ์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถํ๋ค.
→ ์ค๊ดํธ๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ํค๊ณผ ๊ฐ์ ์ผํ๋ก ๊ตฌ๋ถํ๋ค.
โฌ๏ธ ํค ๊ฐ์ด ๋์ ์ผ๋ก ๋ณํ ๋๋(ex. ๋ณ์์ผ๋) Bracket notation์ ์ฌ์ฉํด์ผ ํ๋ค.
function getProperty(obj, property) {
return obj[property]
}
// property์ ๊ฐ์ด ์ ๋ฌ์ธ์์ ๋ฐ๋ผ ๋ณํ๊ธฐ ๋๋ฌธ์ Bracket notation์ ์ฌ์ฉํด์ผ ํ๋ค.
โฌ๏ธ ๊ฐ์ ์ถ๊ฐ์ ์ญ์
let user = {
fristName: "Haily",
lastName: "Lee",
city: "Seoul"
};
user.favorite = "coffee"; // ๊ฐ ์ถ๊ฐ
user["study"] = "computer science" // ๊ฐ ์ถ๊ฐ
delete user.study; // ๊ฐ ์ญ์
๋ผ์ด๋ธ ์ธ์ ์์ ์๊ธฐํ๋ ๊ฑด๋ฐ, CRUD (create, read, update, delete)๋ฅผ ํ ์ค ์๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ๐๐ป ๊ฐ์ฒด์์ ๊ฐ์ ์ถ๊ฐํ๊ณ , ์ฝ๊ณ , ์์ ํ๊ณ , ์ญ์ ํ ์ ์์ผ๋ CRUD๋ฅผ ํ ์ค ์๋ค๊ณ ๋งํ ์ ์๋ ๊ฒ์ธ๊ฐ.. ใ -ใ
โฌ๏ธ in ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ํด๋นํ๋ ํค๊ฐ ์๋์ง ํ์ธ
let user = {
fristName: "Haily",
lastName: "Lee",
city: "Seoul"
};
console.log('city' in user) // true
console.log('favorite' in user) // false
โ๏ธ ์ฐ์ต๋ฌธ์ .
์ฐ์ต๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ข ๋ ํ์คํ ์ ์ ์์๋ค. ์ฐ์ต๋ฌธ์ ์ for/in ๋ฌธ์ด ํนํ ๋ง์ด ๋์์ ์์ํ๋ for/in ๋ฌธ๋ ์ต์ํด์ง ์ ์์๋ค.
์ฐ์ต๋ฌธ์ 1.
for/in
๋ฌธ์ ๊ฐ์ฒด์ ๋ชจ๋ ์ด๊ฑฐํ ์ ์๋ ํ๋กํผํฐ๋ฅผ ์ํํ ์ ์๋๋ก ํด์ค๋ค. ์ฆ, ๊ฐ์ฒด ์์ ์์ฑ ํ๋ํ๋๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํ๋ค. for/in ๋ฌธ์ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
// ๊ฐ์ฒด๋ฅผ ์
๋ ฅ๋ฐ์ string ํ์
์ ๊ฐ์ ๊ฐ๋ ์์ฑ์ ์ ๊ฑฐํ๋ ํจ์
function removeStringValues(obj) {
for ( let prop in obj ) {
if ( typeof obj[prop] === "string" ) {
delete obj[prop]
}
}
}
// ์
์ถ๋ ฅ ์์
const obj = {
name: "Elle",
age: 20,
favorite: "coffe"
};
removeStringValues(obj)
console.log(obj) // { age: 20 }
์ฐ์ต๋ฌธ์ 2.
Object.key()
๋ ๊ฐ์ฒด์ ํค๋ฅผ ๋ฐฐ์ด์ ๋ฐํํ๊ณ , Object.values()
๋ ๊ฐ์ฒด์ ๊ฐ์ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค. ์ด๋ฅผ ํ์ฉํ ๋ฌธ์ ๊ฐ ์์๋๋ฐ, ๋๋ ์ด๊ฑธ ์ข ๋ ๋ณต์กํ๊ฒ(?) ํ์๋๋ฐ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ํ์ค๋ก ํด๊ฒฐ๋๋๋ผ๋..! ๋ฌธ์ ์์ ๋ช ๋ฒ ๋ฑ์ฅํ ๋๋ถ์ ์ด ๋์ ์ฌ์ฉ๋ ์น์ํด์ก๋ค.
// ๊ฐ์ฒด๋ฅผ ์
๋ ฅ๋ฐ์ ์์ฑ์ ๊ฐ์๋ฅผ ๋ฆฌํดํ๋ ํจ์
function countNumberOfKeys(obj) {
/* ๋ด๊ฐ ์์ฑํ ์ฝ๋
// ํ๋กํผํฐ๋ฅผ ์ํํ๋ฉฐ len์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ
let len = 0
for (prop in obj) {
len++
}
return len;
*/
// ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด obj์ key๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํด ๊ธธ์ด๋ฅผ ๋ฐ๋ก ์ ์ ์๋ค.
// Object.keys(obj) → [ 'a', 'b', 'c' ]
return Object.keys(obj).length;
}
// ์
์ถ๋ ฅ ์์
const obj = {
a: 1,
b: 2,
c: 3,
};
console.log( countNumberOfKeys(obj) ); // 3
์ฐ์ต๋ฌธ์ 3.
๊ฐ์ฒด์ ๊ฐ์ ์ถ๊ฐํ๋ ๊ฐ๋ ์ด ์กฐ๊ธ ํท๊ฐ๋ ธ์๋๋ฐ, ์ด ๋ฌธ์ ๋ฅผ ํ๊ณ ์ดํด๊ฐ ์ข ๋์๋ค.
// ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ฅผ ์
๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ๊ฐ ์์๋ค์ ๊ฐ์ฒด์ ํค๋ก ํ์ ๋ ๊ทธ ๊ฐ์ ์ถ์ถํ์ฌ ๋ง๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ ํจ์
function select(arr, obj) {
let newObj = {}
for ( let prop in obj ) {
if ( arr.includes(prop) ) {
// ์
์ถ๋ ฅ ์์๋ฅผ ์๋ก ๋ค๋ฉด,
newObj[prop] = obj[prop]
// newObj["a"] = obj["a"] → newObj = { a: 1 }
// newObj["c"] = obj["c"] → newObj = { a: 1, c: 3 }
}
}
return newObj;
}
// ์
์ถ๋ ฅ ์์
const arr = ['a', 'c', 'e'];
const obj = { a: 1, b: 2, c: 3, d: 4 };
console.log ( select(arr, obj) ) // { a: 1, c: 3 }
prop์ด๋ ๋ณ์๋ฅผ ํ ๋นํด์ผ ํ๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก newObj["prop"]
์ด๊ฒ ์๋๋ผ newObj[prop]
์ด๋ ๊ฒ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ,
๊ทธ๋ฆฌ๊ณ ์๋ฅผ ๋ค์ด obj = {a: 1}
์์ obj[prop]
์ด๊ฑด key('a')
๊ฐ ์๋๋ผ value(1)
๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๊ทธ value(1)
๋ฅผ newObj
์ ํค๊ฐ prop('a')
์ธ ๊ณณ์ value(1)
๋ก ํ ๋นํ๋ ๊ฒ. ๊ทธ๋์ newObj = {a: 1}
์ด๋ ๊ฒ ๋๊ฐ์ด ์์ฑ๋๋ค.
์์ธ์ง ์ด ๋ถ๋ถ์ด ๋ฌด์ฒ ํท๊ฐ๋ ธ๋ค.
๊ฐ๋จํด ๋ณด์ด๋๋ฐ ๋ง์ ํ๋ ค๋ ์ฝ์ง ์์ ๋ฌธ์ ๋ค๋ ์๊ณ , ์ด๋ป๊ฒ ํธ๋๊ฑฐ์ง? ํ๋๋ฐ ๋ฉ์๋ ํ๋๋ก ๊ฐ๋จํ ํด๊ฒฐํ๋ ๋ฌธ์ ๋ ์๊ณ . ์ฌ๋ฏธ์์ผ๋ฉด์๋ ์ ์ํ๋ฆฌ๋ฉด ์ฝ๊ฐ ์ง์ฆ๋ ๋์ง๋ง.. ์์ง๊น์ง๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค! ๋ ์ ๋ฆฌํ๊ณ ์ถ์ ๋ฌธ์ ๋ค์ด ์๋๋ฐ, ์๊ฐ์ด ์กฐ๊ธ ๋ฆ์ด์ ๋ค์๋ฒ์ ์์ ํ ๊น ํ๋ค. ์ด ๊ธ์ ์์ ํ ์๊ฐ์ด ์์ผ๋ ค๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๐ญ
๐ ์ค๋์ ํ๊ณ
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ์ฐ์ต ๋ฌธ์ ๋ฅผ ํ๋ฉด์ for/in ๋ฌธ์ ์ ๋ง ๋ง์ด ์ผ๋๋ ์์ํ๋ ๋ฌธ๋ฒ์ ๋นจ๋ฆฌ ์ต์ํด์ก๋ค. for/in๋ฌธ ๋ฟ๋ง ์๋๋ผ ๋ฐฐ์ด ๋ฉ์๋๋ ๋ช ๋ฒ ์ฌ์ฉํ๋๋ ๋ ์ต์ํด์ก๋ค. ํ์ง๋ง ์ญ์ ์ด๋ ค์ด ๋ฌธ์ ๋ ํธ๋๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ค. ๋ง์ง๋ง ๋ฌธ์ ๋ ๋ผ์ด๋ธ์ธ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋๋ฐ, ์์ ์ด ๋๋๊ณ ํผ์ ๋ค์ ํด๋ณด๋ ค๊ณ ํ๋ ์๊ฐ์ด ์ ๋์ง ์์๋ค. ๋ฉ๋ชจํด๋จ๋ค๊ฐ ๋ค์์ ๋ค์ ํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ ๋ง์ด ํ์ด๋ณด๋๊ฒ ์ฅ๋ก์ด๋ผ๋๋ฐ, ๋์๊ฒ ๋๋ฌด ์ด๋ ค์ด ์๊ณ ๋ฆฌ์ฆ… ์ํ๊ณ ์ถ์๋ฐ ์ฐ๋ฌธ๊ณผ์ธ ๋๋ ์ ๋ง ์ฝ์ง ์๋ค ๐ญ ๊ทธ๋๋ ํ๋ฉด ํ์๋ก ์ฌ๊ณ ํ๋ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๊ณ ์๋ค๋ ๊ฒ์ ๋๊ปด์ง๋ค. ๋ฌผ๋ก ์์ ๊ฐ๋จํ ์ ๊ธฐ๋ฌธ์ ์ ๋๋ฐ์ ๋ชปํ์ง๋ง… ํด ๐ฆ
์ง๊ธ ํ๋ก ํธ์๋ ๋ถํธ์บ ํ์ ์ฝ 140๋ช ์ ๋ ์๊ฐ์์ด ์๋๊ฒ ๊ฐ์๋ฐ, ์ ์ ๋์ค์ฝ๋ ์ฑํ ๋ฐฉ์ ๋ง์๊ฐ ์ค์ด๋ค๊ณ ์๋ค. ์จ๋ผ์ธ์ผ๋ก ๋ง์ ์ฌ๋์ด ํ๊บผ๋ฒ์ ํ์ต์ ํ๋๊ฒ ๋ญ๊ฐ ์ ๊ธฐํ๋ฉด์๋ ํผ์ ๊ณต๋ถํ๋ ๊ฒ ๊ฐ์ ๋๋๋ ๋ค๊ณ , ํ์คํ ํ์์ ๋ค๋๋ ๊ธฐ๋ถ์ ์๋๋ ๊ฒ ๊ฐ๋ค.
์ด์ ๋ถํฐ๋ ์ ๋ง ๊ณต๋ถํ ๊ฒ ๋ ๋ง์์ง๊ณ ์๋ค๋ ์๊ฐ์ด ๋ ๋ค. ๋งค์ผ ํ ์ผ์ ์ฒดํฌํ๋ฉด์ ํ๊ณ ์๋๋ฐ๋, ๋ด์ผํ ์๋ฃ์ ํด์ผ ํ ๊ณต๋ถ๊ฐ ๋์ณ๋๋ ๊ฒ ๊ฐ๋ค.
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section1 Unit9 JavaScript ํต์ฌ ๊ฐ๋ ๊ณผ ์ฃผ์ ๋ฌธ๋ฒ - ES6 ์ ๊ท ๋ฌธ๋ฒ (0) | 2023.04.28 |
---|---|
Section1 Unit9 JavaScript ํต์ฌ ๊ฐ๋ ๊ณผ ์ฃผ์ ๋ฌธ๋ฒ - ์๋ฃํ, ์ค์ฝํ, ํด๋ก์ (0) | 2023.04.27 |
Section1 Unit8 JavaScript ๋ฐฐ์ด (0) | 2023.04.25 |
Section1 Unit7 Linux, Git ๊ธฐ์ด (0) | 2023.04.24 |
Section1 Unit6 ๊ฐ๋จํ ์น์ฑ ๋ง๋ค๊ธฐ - ๊ณ์ฐ๊ธฐ ๊ตฌํ (๊ธฐ๋ณธ) (0) | 2023.04.21 |