๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend Dev/๐Ÿฅ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE ๋ถ€ํŠธ์บ ํ”„

Section1 Unit8 JavaScript ๊ฐ์ฒด

๋ฐ˜์‘ํ˜•


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๋ช… ์ •๋„ ์ˆ˜๊ฐ•์ƒ์ด ์žˆ๋Š”๊ฒƒ ๊ฐ™์€๋ฐ, ์ ์  ๋””์Šค์ฝ”๋“œ ์ฑ„ํŒ…๋ฐฉ์— ๋ง์ˆ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ  ์žˆ๋‹ค. ์˜จ๋ผ์ธ์œผ๋กœ ๋งŽ์€ ์‚ฌ๋žŒ์ด ํ•œ๊บผ๋ฒˆ์— ํ•™์Šต์„ ํ•˜๋Š”๊ฒŒ ๋ญ”๊ฐ€ ์‹ ๊ธฐํ•˜๋ฉด์„œ๋„ ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ๋„ ๋“ค๊ณ , ํ™•์‹คํžˆ ํ•™์›์„ ๋‹ค๋‹ˆ๋Š” ๊ธฐ๋ถ„์€ ์•ˆ๋“œ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 ์ด์ œ๋ถ€ํ„ฐ๋Š” ์ •๋ง ๊ณต๋ถ€ํ•  ๊ฒŒ ๋” ๋งŽ์•„์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋งค์ผ ํ•  ์ผ์„ ์ฒดํฌํ•˜๋ฉด์„œ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ๋„, ๋ด์•ผํ•  ์ž๋ฃŒ์™€ ํ•ด์•ผ ํ•  ๊ณต๋ถ€๊ฐ€ ๋„˜์ณ๋‚˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋ฐ˜์‘ํ˜•