JavaScript Objects, Square Brackets and Algorithms - Lee-hyuna/33-js-concepts-kr GitHub Wiki
μλ¬Έ μΆμ² : https://www.freecodecamp.org/news/javascript-objects-square-brackets-and-algorithms-e9a2916dc158/
by Dmitri Grabov
μλ°μ€ν¬λ¦½νΈμ κ°μ₯ κ°λ ₯ν μΈ‘λ©΄ μ€ νλλ κ°μ²΄μ μμ±μ λμ μΌλ‘ μ°Έμ‘°ν μ μλ€λ κ²μ΄λ€. μ΄ κΈμμ μ°λ¦¬λ μ΄κ²μ΄ μ΄λ»κ² μλνλμ§ κ·Έλ¦¬κ³ μ΄κ²μ΄ μ°λ¦¬μκ² μ΄λ€ μ΄μ μ μ€ μ μλμ§λ₯Ό μ΄ν΄λ³Ό κ²μ΄λ€. μ°λ¦¬λ μ»΄ν¨ν° κ³Όνμμ μ¬μ©λλ λ°μ΄ν° ꡬ쑰 μ€ μΌλΆλ₯Ό κ°λ¨ν μ΄ν΄λ³Ό κ²μ΄λ€. λν μ°λ¦¬λ μκ³ λ¦¬μ¦μ μ±λ₯μ μ€λͺ νλ λ° μ¬μ©λλ Big O νκΈ°λ²μ΄λΌκ³ λΆλ¦¬λ κ²μ μ΄ν΄λ³Ό κ²μ΄λ€.
Object intro
μ°μ μλμ°¨λ₯Ό λννλ κ°λ¨ν 물체λ₯Ό λ§λλ κ²λΆν° μμν©μλ€. κ° λ¬Όμ²΄λ μμ±μ΄λΌκ³ λΆλ¦¬λ κ²μ κ°μ§κ³ μλ€. μμ±μ 물체μ μνλ λ³μλ€. μ°λ¦¬μ μλμ°¨ 물체λ μΈ κ°μ§ νΉμ±μ κ°μ§ κ²μ΄λ€: make
, model
, color
μ΄λ€ λͺ¨μ΅μΌμ§ 보μμ£ .
const car = { make: 'Ford', model: 'Fiesta', color: 'Red'};
μ°λ¦¬λ μ νκΈ°λ²μ μ¬μ©νμ¬ λ¬Όμ²΄μ κ°λ³ μμ±μ μΈκΈν μ μλ€. μλ₯Ό λ€μ΄, λ§μ½ μ°λ¦¬κ° μ°λ¦¬ μ°¨μ μμ΄ λ¬΄μμΈμ§ μκ³ μΆλ€λ©΄, μ°λ¦¬λ car.color
μ κ°μ μ νκΈ°λ²μ μ¬μ©ν μ μλ€.
console.logλ₯Ό μ¬μ©νμ¬ μΆλ ₯ν μλ μλ€.
console.log(car.color); //outputs: Red
μμ±μ μ°Έμ‘°νλ λ λ€λ₯Έ λ°©λ²μ μ¬κ°ν λΈλΌμΌ νκΈ°λ²μ μ¬μ©νλ κ²μ΄λ€.
console.log(car['color']); //outputs: Red
μμ μμμλ μμ± μ΄λ¦μ λκ΄νΈ μμ λ¬Έμμ΄λ‘ μ¬μ©νμ¬ ν΄λΉ μμ± μ΄λ¦μ ν΄λΉνλ κ°μ μ»λλ€.
μ¬κ°ν λΈλΌμΌ νκΈ°λ²μ μ μ©ν μ μ λ³μλ₯Ό μ¬μ©νμ¬ λμ μΌλ‘ μμ±μ μ»μ μ μλ€λ κ²μ΄λ€.
μ¦, νΉμ μμ± μ΄λ¦μ νλμ½λ©νλ κ²μ΄ μλλΌ λ³μμμ λ¬Έμμ΄λ‘ μ§μ ν μ μλ€.
const propertyName = 'color';const console.log(car[propertyName]); //outputs: Red
μ¬κ° λΈλν· νκΈ°λ²κ³Ό ν¨κ» λμ lookup μ¬μ©
μ΄κ²μ μ΄μ©ν μ μλ μλ₯Ό 보μ.
λ μ€ν λμ μ΄μνλ©΄μ λ©λ΄μ μλ νλͺ©μ κ°κ²©μ μ»μ μ μκΈ°λ₯Ό μνλ€κ³ νμ.
μ΄κ²μ νλ ν κ°μ§ λ°©λ²μ if/else λ¬Έμ₯μ μ¬μ©νλ κ²μ΄λ€.
νλͺ©λͺ μ μλ½νκ³ κ°κ²©μ λ°ννλ κΈ°λ₯μ μ°μ.
function getPrice(itemName){ if(itemName === 'burger') { return 10; } else if(itemName === 'fries') { return 3; } else if(itemName === 'coleslaw') { return 4; } else if(itemName === 'coke') { return 2; } else if(itemName === 'beer') { return 5; }}
μμ μ κ·Όλ°©μμ ν¨κ³Όκ° μμ§λ§, μ΄μμ μ΄μ§ μλ€.
μ°λ¦¬λ μ°λ¦¬ μ½λμ λ©λ΄λ₯Ό νλμ½λ©νλ€. μ΄μ μ°λ¦¬μ λ©λ΄κ° λ°λλ©΄ μ°λ¦¬λ μ½λλ₯Ό λ€μ μ°κ³ λ€μ λ°°ν¬ν΄μΌ ν κ²μ΄λ€.
κ²λ€κ°, μ°λ¦¬λ κΈ΄ λ©λ΄λ₯Ό κ°μ§ μ μκ³ μ΄ μ½λλ₯Ό λͺ¨λ μ¨μΌ νλ κ²μ λ²κ±°λ‘μΈ κ²μ΄λ€.
λ λμ μ κ·Όλ²μ μ°λ¦¬μ λ°μ΄ν°μ λ
Όλ¦¬λ₯Ό λΆλ¦¬νλ κ²μ΄λ€.
κ·Έ μλ£μλ μ°λ¦¬μ λ©λ΄κ° ν¬ν¨λ κ²μ΄κ³ κ·Έ λ
Όλ¦¬λ κ·Έ λ©λ΄μμ κ°κ²©μ μ¬λ¦΄ κ²μ΄λ€.
μ°λ¦¬λ λ©λ΄λ₯Ό ν€λ‘ μλ €μ§ μμ± μ΄λ¦μ΄ κ°μ ν΄λΉνλ κ°μ²΄λ‘ λνλΌ μ μλ€.μ΄ κ²½μ° μ΄μ λ νλͺ©λͺ μ΄κ³ κ°μ νλͺ©κ°κ²©μ΄λ€.
const menu = { burger: 10, fries: 3, coleslaw: 4, coke: 2, beer: 5};
μ¬κ°ν λΈλΌμΌ νκΈ°λ²μ μ¬μ©νμ¬ λ€μ λ κ°μ§ μΈμλ₯Ό μμ©νλ ν¨μλ₯Ό λ§λ€ μ μλ€.
- a menu object
- a string with item name
ν΄λΉ νλͺ©μ κ°κ²©μ λ°ννμμμ€.
const menu = { burger: 10, fries: 3, coleslaw: 4, coke: 2, beer: 5};
function getPrice(itemName, menu){ const itemPrice = menu[itemName]; return itemPrice;}
const priceOfBurger = getPrice('burger', menu);console.log(priceOfBurger); // outputs: 10
μ΄ μ κ·Όλ°©μμ λ¨μ ν μ μ μ°λ¦¬μ λ
Όλ¦¬λ‘λΆν° μ°λ¦¬μ λ°μ΄ν°λ₯Ό λΆλ¦¬νλ€λ κ²μ΄λ€.
μ΄ μμμ, λ°μ΄ν°λ μ°λ¦¬μ μ½λμ μ‘΄μ¬νμ§λ§, κ·Έκ²μ λ°μ΄ν°λ² μ΄μ€λ APIμμ μ½κ² λμ¬ μ μλ€.
κ·Έκ²μ λ μ΄μ νλͺ©λͺ μ νλͺ©κ°κ²©μΌλ‘ λ°κΎΈλ μ°λ¦¬μ 룩μ λ Όλ¦¬μ λ°μ νκ² μ°κ΄λμ΄ μμ§ μλ€.
Datastructures and algorithms
μ»΄ν¨ν° κ³Όν μ©μ΄μ μ§λλ κ° ν€κ° ν΄λΉ κ°μ 맀νλλ ν€/κ° μμ μ§ν©μΈ λ°μ΄ν° ꡬ쑰λ€. μ°λ¦¬λ κ·Έκ²μ νΉμ ν ν€μ ν΄λΉνλ κ°μ 보기 μν΄ μ¬μ©ν μ μλ€. μ΄κ²μ΄ μμ μμμ μ°λ¦¬κ° νκ³ μλ μΌμ΄λ€. μ°λ¦¬λ νλͺ© μ΄λ¦μΈ ν€λ₯Ό κ°μ§κ³ μκ³ μ°λ¦¬λ μ°λ¦¬μ λ©λ΄ μ€λΈμ νΈλ₯Ό μ¬μ©νμ¬ κ·Έ νλͺ©μ μμνλ κ°κ²©μ μ°Ύμλ³Ό μ μλ€. μ°λ¦¬λ μ§λ λ°μ΄ν° ꡬ쑰λ₯Ό ꡬννκΈ° μν΄ μ΄λ€ 물체λ₯Ό μ¬μ©νκ³ μλ€.
μ μ°λ¦¬κ° μ§λλ₯Ό μ¬μ©νκΈ°λ₯Ό μνλμ§ μλ₯Ό 보μ. μμ μ μ΄μνλ©° μ± λͺ©λ‘μ κ°μ§κ³ μλ€κ³ νμ. κ° μ± μλ 13μ리 μ«μμΈ κ΅μ νμ€μμ λ²νΈ(ISBN)λΌλ λ νΉν λ€μ¬μ°κΈ°κ° μλ€. μ°λ¦¬λ μ± μ λ°°μ΄λ‘ μ μ₯νκ³ ISBNμ μ΄μ©νμ¬ μ°Ύμ μ μκΈ°λ₯Ό μνλ€.
μ΄λ κ² νλ ν κ°μ§ λ°©λ²μ λ°°μ΄μ μνμμΌ κ° μ± μ ISBN κ°μ νμΈνκ³ λ°ννλ κ²κ³Ό μΌμΉνλμ§ νμΈνλ κ²μ΄λ€.
const books = [{ isbn: '978-0099540946', author: 'Mikhail Bulgakov', title: 'Master and Margarita'}, { isbn: '978-0596517748', author: 'Douglas Crockford', title: 'JavaScript: The Good Parts'}, { isbn: '978-1593275846', author: 'Marijn Haverbeke', title: 'Eloquent JavaScript'}];
function getBookByIsbn(isbn, books){ for(let i = 0; i < books.length; i++){ if(books[i].isbn === isbn) { return books[i]; } }}
const myBook = getBookByIsbn('978-1593275846', books);
μ΄ μμμλ μ± μ΄ μΈ κΆλ°μ μκΈ° λλ¬Έμ μ λλ€. νμ§λ§ μ°λ¦¬κ° μλ§μ‘΄μ΄λΌλ©΄ μλ°±λ§ κΆ μ΄μμ μ± μ λ°λ³΅νλ κ²μ λ§€μ° λλ¦¬κ³ κ³μ°μ μΌλ‘ λΉμ μ μλ€.
μ»΄ν¨ν° κ³Όνμμ Big O νκΈ°λ²μ μκ³ λ¦¬μ¦μ μ±λ₯μ μ€λͺ νλ λ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, nμ΄ μ°λ¦¬ 컬λ μ μ μ± μλΌλ©΄, μ΅μ μ κ²½μ° μλ리μ€(μ°λ¦¬κ° μ°Ύλ μ± μ λͺ©λ‘μ λ§μ§λ§μ΄λ€)μμ μ± μ μ°Ύλ λ° λ°λ³΅μ μ¬μ©νλ λΉμ©μ O(n)κ° λ κ²μ΄λ€. κ·Έκ²μ μ°λ¦¬κ° μμ§ν μ± λ€μ μκ° λ λ°°λ‘ μ¦κ°νλ€λ©΄, λ°λ³΅μ μ¬μ©νμ¬ μ± μ μ°Ύλ λΉμ©λ λ λ°°κ° λ κ²μ΄λΌλ κ²μ μλ―Ένλ€.
λ€λ₯Έ λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©νμ¬ μκ³ λ¦¬μ¦μ λ³΄λ€ ν¨μ¨μ μΌλ‘ λ§λ€ μ μλ λ°©λ²μ μ΄ν΄λ΄ μλ€.
λ Όμλ λ°μ κ°μ΄, μ§λκ° ν€μ ν΄λΉνλ κ°μ μ°Ύλ λ° μ¬μ©λ μ μλ€. μ°λ¦¬λ κ°μ²΄λ₯Ό μ΄μ©νμ¬ λ°°μ΄μ΄ μλ μ§λλ‘μ λ°μ΄ν°λ₯Ό ꡬ쑰ν μ μλ€.
ν€λ ISBNμ΄κ³ κ°μ ν΄λΉ λμ κ°μ²΄κ° λλ€.
const books = { '978-0099540946':{ isbn: '978-0099540946', author: 'Mikhail Bulgakov', title: 'Master and Margarita' }, '978-0596517748': { isbn: '978-0596517748', author: 'Douglas Crockford', title: 'JavaScript: The Good Parts' }, '978-1593275846': { isbn: '978-1593275846', author: 'Marijn Haverbeke', title: 'Eloquent JavaScript' }};
function getBookByIsbn(isbn, books){ return books[isbn];}
const myBook = getBookByIsbn('978-1593275846', books);
μ°λ¦¬λ μ΄μ λ°λ³΅μ μ¬μ©νλ λμ μ ISBNμ κ°λ¨ν μ§λ μ‘°νλ₯Ό μ΄μ©νμ¬ μ°λ¦¬μ κ°μΉλ₯Ό μ»μ μ μλ€. μ°λ¦¬λ λ μ΄μ κ° κ°μ²΄μ ISBN κ°μ νμΈν νμκ° μλ€. μ°λ¦¬λ ν€λ₯Ό μ¬μ©νμ¬ μ§λμμ μ§μ κ°μ μ»λλ€.
μ±λ₯ λ©΄μμ, μ§λ μ‘°νλ λ°λ³΅μ λΉν΄ μμ²λ ν₯μμ μ 곡ν κ²μ΄λ€. μ§λμ‘°νλ κ³μ°μ μμ΄ λΉμ©μ΄ μΌμ νκΈ° λλ¬Έμ΄λ€. μ΄λ Big O νκΈ°λ²μ O(1)λ‘ νκΈ°νμ¬ μΈ μ μλ€. 300λ§ κΆμ μ± μ΄ μμ΄λ μκ΄μκ³ , μ°λ¦¬λ ISBN ν€λ₯Ό μ¬μ©νμ¬ μ§λλ₯Ό μ‘°μ¬ν¨μΌλ‘μ¨ μ°λ¦¬κ° μνλ μ± μ 빨리 μ»μ μ μλ€.