TIL | [React] <Spread Operator, 코드줄이기>

레이나·2024년 12월 18일

Today I Learned

목록 보기
10/47
post-thumbnail

[사전캠프 10일차]

🛸 오늘의 CodeKATA

🔹 자연수 뒤집어 배열로 만들기

  • 문제를 보고 그냥 뒤집으면 되는 것 아닌가? 라는 생각이 1차
  • 아..넌 사람이 아니지..라는 생각이 2차
  • 입력된 숫자를 나눠야 한다. 하나하나 쪼개야 하기에 문자열 변환이 필요
  • 문자열로 변환 후 각 문자를 1개,1개 각 배열 방에 집어 넣기위해 쪼개기
  • 그리고 순서를 뒤집고, 새 방에 집어 넣기
function solution(n) {
    let answer = []
    let temp = String(n).split('').reverse()
    // String으로 문자열로 변환
    // split으로 나누기 -> ('')공백으로 나눔
    // reverse 로 뒤집기 
    for (let i = 0; i < temp.length; i++) {
        answer.push(parseInt(temp[i])) // tmep에 만든 뒤집은 문자를 answer에 붙이기
    }
     return answer;
}
  • 처음 answer에 붙여넣을 때 정수형으로 선언한지 않았다. 그랬더니 미리보기 결과가..
    자연수를 넣으면 잘 표출은 된다. 하지만 이게뭘까...? 숫자를 원소로 가지는 배열이라고 해서 정수형으로 만들어주었다. 결과값도 잘 나온다.
  • 다른 분들의 풀이도 살펴보았다. 나는 내가 알고 있는 방법으로 진행을 했지만, 저함수 선언을 제외한 5줄의 코드를 2줄로 만들어 버리는 매직~
    알면 알수록 쉽고 간단하게 코딩할수 있다는 점을 다시한번 깨닫는다. 다른 분들의 코드들을 보면서 공부 열심히 하자!

완성 MBTI test

  • 어제에 이어서 MBTI 유효성 검사 JS코드 고민...결국 처음에 시도하고자 했던 forEach문이 아닌 맨 처음에 혼자 시도한 if문으로 경로 변경! 다른 조에서 진행한 부분 참고!
    그리고 많은 if문을 삼항연산자로 표기해보기

🔹 Spread Operator(...)

스프레드 구문, 전개구문, 스프래드 문법, 스프레드 연산자 등으로도 검색하면 확인이 가능하다.

  • 유효성 검사를 위해서 결국 모든 문항에 체크가 되었는지 확인을 하는 것인데, 각 문항들의 형태가 같기 때문에 배열로 만들어서 체크된 갯수를 확인, 1개라도 제출하지 않은(체크되지 않은) 값이 있다면 "모든 항목을 선택해주세요."라는 팝업창 표출.
 // 유효성 검사
    if ([...formData.values()].length < 12) {
      alert("모든 항목을 선택해주세요.");
      return;
    }

formData에는 radio타입input태그들이 들어가 있다. 그 값이 체크가 되었는지 확인하고, 체크된 갯수가 우리가 만든 문항의 갯수보다 작다면 제출하지 않은 답변이 있기 때문에 확인해 보라는 팝업창을 띄우도록 하였다.
여기서 각 값들values을 펼쳐 배열로 만들어주기 위해서 formData앞에 ...를 사용 하였고, 그 배열을 담기위해서 []로 묶어 주었다.

코드줄이기..?

  • E/I , S/N, T/F, J/P를 각각 구분하기 위해서 if..else문이 총 4회 들어갔다.
    이것을 줄여보고자 각 항목별 삼항연산자를 사용하여 1로 줄였고, 그것마저 줄이면?? 하면서 묶어버린것 까진 좋았으나.. 가독성이 좋지 않다.
//if문 삼항연산자로 줄여보기
    const personalityType = `${score.E > score.I ? "E" : "I"}${score.S > score.N ? "S" : "N"}${score.T > score.F ? "T" : "F"}${score.J > score.P ? "J" : "P"}`;

코드를 줄이는 것도 좋지만, 나중을 위해서도 가독성이 좋은 방향으로 선택해서 코드를 작성해야겠다는 생각이든다.

참고 : 튜터님, 다른조분들

profile
one setp

0개의 댓글