본문 바로가기
TIL

replit 중간 시험 (js)

by 은지:) 2022. 7. 29.
728x90
반응형

 

 

 

 

 

 

위코드 수료 2주차! 🫠

 

 

그 동안 html, css, js 기본 문법을 익히고 인스타 클론을 진행했는데

 

다음 주 react 들어가기 전 간단한 중간고사를 보았다

문제는 총 다섯 문제로, 이를 포스팅하며 다시 정리해보려한다

 

 

 

 

 

 

 

문제 1

 

👆내 정답

 

 

if 문을 써서 조건문 나머지 값으로 돌렸다.

사실 너무 오랜만에 써서 그런지... num % 0 해놓고 왜 안 되지? 하며 열 냄 😅

 

그리고 이 식을 간단하게 바꿔보고 싶어서 여러개 시도해봤다

 

 

 

 

1. if 문에 else문을 빼고 적어도 무방하다. return 꼭 적어줘야 실행된다

 

 

 

 

 

 

 

 

2. 삼항자로도 적어보았는데 true false 값에 return 주든 안 주든 실행이 안 되어 놀랐다. return이 아예 함수 전체를 감싸야 실행됐다.

 

 

 

 

 

 

 

 

 

🤔 사실 이 문제 틀렸다

 

계속 num % 0 = 0 치고 머리 싸매고 있었기 때문... 클론 하느라 js 간단한 함수식 손을 못 댔는데 이런 실수가 또 나왔다 

 

 

 

 

 

 

 

 

 

문제2

 

 

👈 내 정답

 

하나 하나 변수 만들어서 담고 마지막에 합쳤다.

 

 

 

 

 

 

🤔 이 문제는 맞음!

 

 

 

 

 

 

 

 

문제3

 

 

👈 split 을 써서 간단하게 해결했다.

와중에 split 과 slice가 헷갈려서 조금 찾아봤는데

머리에 두고 외우면 좋을 거 같아서 잠깐 정리를 하려 한다

 

 

 

 

🤔 맞았으나... 찝찝...

 

 

 

 

 

 split() : string을 new 배열로 담을 때

 

 

👇 split() (string을 new 배열로 담을 때)

 

 

변수명.split("구분할 string") 으로 쓰면 그 구분에 따라 string을 배열에 담는다

 

 

 

 

 

 

 

 

 slice(), splice() : 배열을 다룰 때 씀

 

 

 

 

 

👇slice() (잘라서 새로운 배열 객체로 만들 때)

 

 

 

 

 

 

 

 

 

 

👇splice()

 

 

 

splice (배열의 변경을 시작할 인덱스, 배열에서 제거할 요소의 수, 배열에 추가할 요소, 반환값)

: 배열에 추가할 요소, 반환값은 옵션!

: 원본 배열 자체를 바꾸고, 제거된 요소는 변수에 담을 수 있음

 

 

 

 

 

 

 

 

문제4

 

 

 

 

👆 문제 이해부터... 잘못한 4번...

 

 

 

3번 문제에서 "-"로 split 을 쓴 터라 이것도 띄어쓰기로 인덱스를 나누는 줄 알고 착각했다.

그러니까 filter 매개 변수는 문자고, sentence는 문자열인데 sentence에서 해당 filter 문자가 나오면 그 인덱스 값을 내는 함수를 만드는 게 문제였다.

 

반복문으로 sentence 문자 하나하나 돌리고 그 안에 if 문을 써서 만약 sentence 와 filter 문자열이 동일하다면 해당 반복 숫자( = i, 인덱스 번호)를 찾아내게 코드를 짰다.

 

이 문제를 풀면서 어려웠던 게 세 가지가 있었다. 

 

 

 

 

1. 예시 답으로는 i am a hacker 에서 a를 찾는 것인데 그렇다면 sentence를 띄어쓰기 기준으로 (split) 배열로 바꾸어 해야하는 것인지

-> 문제 해석의 문제로 예시는 i am a hacker 가 아닌  i am a hacker 의 인덱스 2번째 a를 말하는 것이었다 

 

 

2. sentence와 filter는 문자열인데 따로 배열을 주지 않고도 인덱스 번호를 줄 수 있는지

-> 자바스크립트에선 줄 수 있다! 따로 split를 사용해 배열로 바꿀 필요가 없었다

 

 

3. for문 안의 if문에서 왜 if- else if 는 되는데 if-else 는 작동하지 않는지

-> 이는 for문 안에서의 if 문이기 때문이다. if-else 를 쓰면 바로 true or false 로 값을 내버리기 때문에 다음 루프를 돌 수가 없다. 그래서 if-else를 쓰는 것!

 

+ 추가로 마지막에 else if (sentence.length -1 === i) return -1  이 무슨 의미인가 많이 고민했는데 반복문이 끝나면 -1 를 반환한다는 의미였다.

 

 

+ 그리고 문제를 여기저기 물어보며 if 안에 따로 return을 주지 않아도 된다는 얘기를 들어 다시 알아보았는데

-> if 는 return 사용 가능하지만 함수 식 안의 if문은 return 값을 필요로 하기 때문에 넣어주는 게 맞다는 결과가 나왔다🤗

 

+ 저 if 문을 삼항자로 바꿀 수 없을까? 하는 고민이 들었다. 하지만 삼항자는 조건 ? true : false 로 식을 닫아버리기 때문에 반복문 안에서는 적절하지 않다!

 

 

 

 

 

🫠 이 문제는 틀렸다

 

 

 

 

 

 

 

 

 

문제5

 

 

 


👆 arr라는 배열을 인자 값으로 받는데, 이 안에서 가장 긴 단어를 찾으라는 문제였다.

if 문 안에서 배열 하나 두고 객체 길이 값을 하나씩 넣어 비교하면 될 거 같았다

(arr[i].length> longest.length)일 때 longest=arr[i]

 

 

👆 2022.07.30 수정

 

longest 배열에 첫번째 arr[0]를 넣고 돌리는 것으로!

반복문 써서 돌리는데 longest에 이미 [0]이 있으므로 i=1 로 시작한다


 

 

일단 for문으로 배열을 돌리고 arr[i].length를 써서 인덱스 길이에 접근했다.

for문 안에 if 문을 넣어 배열을 하나 두고 더 큰 값을 넣게 하면서 longest 안에 가장 큰 값이 남아 있게 했다

그리고 return longest!

 

 

 

 

 

이렇게 쓸 수도 있다. 하지만 for in은 객체를 돌리려 만들어진 것이기 때문에 좋은 접근은 아닌 거 같다.

 

 

 

 

 

 

👇mdn에서 가져온 for in 문서

 

 

 

 

 

+ for of 는 값 자체를 내놓는 함수라 어울리지 않는다

 

 

 

 

 

 

 

 

 

 

 

풀면서

 

 

문제 푸는 거 1시간...

풀이하며 포스팅하는 거 하루 종일... 🫠

 

금방 뚝딱 끝날 줄 알았던 풀이가 정말 오래 걸렸다.

slice splice 개념도 다시 찾아보며 정말 애 먹었고

4-5번 문제에서도 세세하게 뜯어보다 오래 걸린 거 같다.

 

그래도 기본 개념을 정리할 수 있어서 좋았고

계속 DOM 하다가 오랜만에 js 배열, 객체 보니까 나름 재미도 있었다.

 

 

 

 

👋👋

 

 

 

 

728x90
반응형

'TIL' 카테고리의 다른 글

git & github 사용법  (0) 2022.07.31
인스타 login page 클론 Day2 (수정본)  (0) 2022.07.30
인스타 login page 클론 Day1  (0) 2022.07.28
http 란?  (0) 2022.07.28
class -instance와 object의 차이-  (0) 2022.07.24

댓글