프로그래머스 데브코스 웹 풀사이클 5주차 2일차

geun·2023년 12월 12일
0

데브코스

목록 보기
18/79
post-thumbnail

JavaScript

forEach

forEach함수란?

배열을 순회하기 위한 함수지만, 기존 for문과는 약간 다르게 동작한다.
배열과 함께 콜백함수를 인자로 갖고,배열 요소를 하나 꺼낸 후, 매개변수로 요소를 전달하여 콜백함수를 실행한다. 첫번째 매개변수는 배열의 데이터, 두번째는 인덱스, 세번째는 객체 전체를 반환한다.

const arr = [1, 2, 3, 4, 5];

arr.forEach((a, b, c) => {
  console.log(`a : ${a}, b: ${b}, c:${c}`);
});

출력

a : 1, b : 0, c : 1,2,3,4,5
a : 2, b : 1, c : 1,2,3,4,5
a : 3, b : 2, c : 1,2,3,4,5
a : 4, b : 3, c : 1,2,3,4,5
a : 5, b : 4, c : 1,2,3,4,5

forEach와 Map

Map에서 forEach문을 동작시킬 경우, 매개변수가 value, key, Map 순으로 동작한다.

let map = new Map();
map.set(7, "seven");
map.set(9, "nine");
map.set(8, "eigth");

map.forEach((a, b, c) => {
  console.log(`a : ${a}, b : ${b}, c : ${c}`);
});

출력

a : seven, b : 7, c : [object Map]
a : nine, b : 9, c : [object Map]
a : eigth, b : 8, c : [object Map]

Map 심화

const arr = [1, 2, 3, 4, 5];

arr.map((a, b, c) => {
  console.log(`a : ${a}, b : ${b}, c : ${c}`);
});

출력

a : 1, b : 0, c : 1,2,3,4,5
a : 2, b : 1, c : 1,2,3,4,5
a : 3, b : 2, c : 1,2,3,4,5
a : 4, b : 3, c : 1,2,3,4,5
a : 5, b : 4, c : 1,2,3,4,5

다음과 같이 foreach가아닌 map을 사용해도 출력하는결과에 차이가 크게 없음을 알 수 있다.
그렇다면 둘은 어떤 차이가 있을까?

const foreachArr = arr.forEach((a, b, c) => {
  console.log(`a : ${a}, b : ${b}, c : ${c}`);
  return a * 2;
});
const mapArr = arr.map((a, b, c) => {
  console.log(`a : ${a}, b : ${b}, c : ${c}`);
  return a * 2;
});

console.log(`foreach 리턴 값 : ${foreachArr}
map 리턴 값 : ${mapArr}`);

출력

foreach 리턴 값 : undefined
map 리턴 값 : 2,4,6,8,10

다음과 같이 foreach는 리턴 값이 존재하지 않는다는 차이가 있다.

API 설계

DELETE

필요없는 데이터를 삭제하기 위한 메소드이다.
request 값으로는 id, response로는 삭제가 완료되었다는 내용을 담는다.

PUT

데이터를 수정하기 위한 메소드 이다.
request 값으로는 id와 body, response값은 변경이 완료되었다는 내용을 담는다.

HTTP 상태 코드

  • 1xx : 요청을 받았고 프로세스를 계속 한다.
  • 2xx : 요청을 성공적으로 받았고, 인식했고, 수용했다.
    조회/수정/삭제 성공 : 200, 등록 성공 : 201
  • 3xx : 요청 완료를 위해 추가 작업 조치가 필요하다.
  • 4xx : 요청 오류가 발생하였다.
    필요한 데이터가 없음 : 400, 찾는 페이지 없음 : 404
  • 5xx : 서버에 오류가 발생하여 실패했다.
    서버가 죽었을 때 : 500

리팩토링

리팩토링이란?

코드내용 혹은 구조를 바꾸는 것. 즉, 나쁜 코드를 클린 코드로 변환하는 과정을 나타낸다.

  1. 이해하기 쉽게 만든다.
  2. 성능을 더 좋게 바꾼다.
  3. 안정성을 증가 시킨다.

리팩토링을 해야할 때

  1. 에러가 발견 되었을 때
  2. 기능을 추가하기 전에
  3. 코드 리뷰할 때

※ 단, 배포, 운영 직전에는 코드 수정이 일어나선 안된다.

오늘의 소감

오늘부로 GET POST DELETE PUT 모든 메소드를 다 다뤄보았다. 이제는 이 메소드들을 이용해 직접 뭔가를 만들어볼 수도있을것 같은 생각이 든다. 과거 JSP를 기반으로한 백엔드를 아주 살짝 다뤄 봤는데 동작하는 방식 자체는 크게 다른것 같지 않아보인다.

0개의 댓글