2025-02-14학습 (Map, 자바스크립트 함수의 형태)

airbus·2025년 2월 14일

프로그래머스

목록 보기
13/93

🔵 Today

  • Map
  • Map과 REST API 설계
  • JavaScript의 함수

📘 Learned

Map

맵의 특징

  • Map은 '객체'처럼 '키-값'으로 데이터를 저장합니다.
  • Map의 는 객체와 다양한 자료형이 가능합니다. (객체의 경우 '키'의 자료형으로 문자열'String'만 허용합니다.)
  • 속성들의 순서가 정해져있습니다. (데이터를 추가한 순서대로 유지합니다.)

|실습| map 생성

//===object
let book1 = {
  productName : "book1",
  price : 10000,
}
let book2 = {
  productName : "book2",
  price : 14000,
}
===map
let db = new Map();
db.set(1, book1); // (key : value)
db.set(2, book2);

//console.log(db);
console.log(db.get(1));
console.log(db.get(2));
===>
  {productName: 'book1', price: 10000}
  {productName: 'book2', price: 140000}

1) 객체 book1, book2를 생성하고
2) db map을 생성 set(키, 값)으로 데이터를 추가합니다.'
3) get으로 '키'를 조회 해당하는 값을 불러옵니다.


Map의 사용

명령어설명
let/const 맵이름 = new Map()맵을 생성합니다.
맵이름.set(키, 값)키 : 값으로 map에 속성을 추가합니다.
맵이름.get(키)키 값을 조회, 값을 불러옵니다.
맵이름.delete(키)해당 키의 속성을 삭제합니다.
맵이름.clear()맵의 데이터들을 전부 제거합니다.
맵이름.has(키)속성 존재 여부를 확인합니다. 있으면 true. 없으면 false
맵이름.size맵의 속성개수를 조회합니다.

express + map + object

지금까지 학습한 내용들로 express로 서버를 생성하여, 조회/검색하는 url에 맞는 데이터를 출력해보겠습니다.

//==========express module
const express = require('express');
const app = express();

app.listen(1234);
  • express 모듈을 불러오고 포트'1234'를 사용합니다.

//==========data
let book1 = {
  title : "English World",
  page : 120,
  price : 9900,
}
let book2 = {
  title : "C#",
  page : 340,
  price : 22000,
}
let book3 = {
  title : "Data Networking",
  page : 480,
  price : 39900,
}
  • 객체 리터럴 방식으로 객체를 생성하였습니다. ( {}를 사용하여 객체를 생성하는 방식)
  • ( 키 : 객체 ) 형태이며 키의 자료형은 문자열로 되어있습니다.

//==========map
let db = new Map();
db.set(1, book1);
db.set(2, book2);
db.set(3, book3);
  • db 이름의 Map을 생성
  • db.set(키, 값)으로 데이터를 추가하였습니다.
  • 이때 키의 자료형은 객체와 달리 문자열이 아닙니다. (숫자)

//==========REST API
app.get('/book/:id', function(req, res) {
  let {id} = req.params
  id = parseInt(id) // 위에서 받아오는 파라미터를 문자열로 받아오기 때문 "id" => id
  
  const book = db.get(id);
  
  if (book) === undefined {
      res.json({
      	message : "해당 내용의 책이 없습니다."
      })
  } else {
        res.json(book);
})
  • url 에서 /book/의 뒤에오는 파라미터를 id로 하였습니다.
  • 구조 분해 할당 방식으로, req.params에서 id의 속성만 id(변수)에 담습니다.
    └ ex) /book/1 이면 "id : 1" (id에 해당하는 값 "1"을 저장) // 객체이기에 문자열로 저장됩니다.
  • 저장한 id값을 파싱하여 데이터 타입을 문자열에서 숫자로 바꿨습니다.
  • 반복되서 사용된 db.get(id)를 변수 book으로 선언하였습니다.
  • 조건문을 걸어, url 에서 id값을 찾을 수 없고 undefined에 해당하면 예외처리를 하고
  • 일치하는 값이 있는 경우 .json형태로 (해당 맵의 객체의)값을 출력합니다.

함수

1)

functinon add1 (x, y) {
  return x + y
}
  • 일반적인 함수 선언 형태입니다.
  • function 함수이름 (매개변수) { 함수내용 } 의 형태입니다.
  • 함수 선언식이라고 합니다.

2)

let add2 = function (x, y) {
  return x + y
}
  • 변수를 선언하듯이 함수를 선언했습니다.
  • 함수 자체의 이름은 없습니다(익명함수)
  • 함수가 변수 add2에 할당됩니다.
  • 변수를 함수처럼 호출할 수 있습니다.
    ex) add2(1, 2);
  • 함수 표현식이라고 합니다.

// add2는 변수이기에 다른 함수를 대입할 수 있습니다.

3)

const add3 (x, y) => {
  return x + y
}
  • =>를 사용하여 함수를 만듭니다. (화살표 모양)
  • 원래의 function add3() 형태에서 function 키워를 뺀 뒤, 함수 표현식처럼 변수형태로 표현합니다. + =>
    ex) const function add3 = (x, y) =>
  • 화살표 함수라고 합니다.

4)

const add44 = (x, y) => x + y
  • 화살표 함수에서 함수의 내용이 return 문 만 있는경우 return문과 {}를 생략한 형태입니다.
  • 매개변수가 한 개인 경우에는 매개변수의 ()를 생략할 수 있습니다.
  • 매개변수가 0개인 경우에는 ()를 생략할 수 없습니다.

0개의 댓글