Q1. make a string out of array
:배열을 스트링으로 출력.

A1. join
join을 이용해서 배열을 스트링으로 출력한다.
구분자에 아무것도 쓰지 않아도 자동으로 ,로 구분됨.

구분자에 ^을 넣으니 ^로 구분되는 것을 볼 수 있음.
Q2. make an array out of a string
:스트링을 배열로 출력.

A2. split
split을 이용해서 배열로 출력한다.
('구분자', 리밋)으로 리밋은 앞에서부터 나오는 값의 갯수를 설정한다.
옵션이기때문에 필수로 작성할 필요는 없다.
반면, '구분자'가 없으면 " "이 안에 모든 값이 출력되기때문에
꼭 구분자를 입력해야 한다.
Q3. make this array look like this: [5, 4, 3, 2, 1]
:주어진 배열의 순서를 거꾸로 만들어라

A3. reverse
reverse는 주어진 배열을 거꾸로 전달해준다.

여기서 유념해야 할 것은 reverse는 함수를 호출한 배열 자체도 순서가 바뀐다.
즉 배열 자체의 순서를 바꾸고 리턴값도 변화된 배열을 리턴함.
Q4. make new array without the first two elements
:주어진 배열에서 첫 번째와 두 번째 배열을 제외한 나머지로 새로운 배열을 만들어라

저번 시간에 배운 splice로 삭제할 수는 있다.
splice(지우기를 희망하는 인덱스 시작점, 지울 갯수);를하면
result에는 지워지는 값이 리턴되고, array, 배열 자체에는 3,4,5만 남게된다.
하지만 질문은 새로운 함수를 만드는것까지가 문제이기 때문에
splice는 사용할 수 없다.

A4. slice
slice를 사용하면 배열에서 원하는 부분만 리턴해서 받아올 수 있고
배열 자체는 그대로 유지된다.
slice(남겨질 부분 시작하는 인덱스, 남겨질 부분 끝나는 인덱스 +1);
Q5 부터는 아래 class로 문제 풀이를 할 것이다.

Q5. find a student with score 90
:점수가 90점인 학생을 찾으시오.

A5. find를 사용해서 찾아준다.
콜백함수를 사용해서 score가 90인 student를 찾으면 리턴되게 작성한다.

위에 코드는 에로우 함수로 바꿔서 더 간단하게 작성할 수 있다.
Q6. make an array of enrolled students
:수업에 등록한 학생들만(enrolled=true) 배열 함수로 만들어라.

A6. filter
filter는 true의 값만 리턴해준다. 이것도 에로우 함수로 작성이 가능.
Q7. make an array containing only students scores
:점수 값(score)만 뽑아와서 새로운 배열을 만들어라.

A7. map
맵은 배열안에 들어있는 요소 한 가지, 한 가지를 다른것으로 변환해주는 것.
기존에 있던 배열들이 함수를 거치게 되면서 새로운 값으로 재탄생 된다고 생각하면 됨.
여기에서는 student를 student.score로 변환하여 score값만 출력.
만약 학생들의 점수를 2배로 하고싶다면

이렇게 함수를 정의해주면 2배로 된 값이 출력됨.
Q8. check if there is a student with the score lower than 50
:50점보다 낮은 점수가 있는지 확인해라.

A8. some
some은 배열에서 하나라도 조건에 만족하는게 있으면 true가 리턴됨.
비슷한것으로 every가 있는데 every는 배열이 모두 조건에 충족해야지만 true가 리턴됨.
Q9. compute students' average score
:학생들의 평균점수를 구해라.

A9. reduce
reduce는 배열에 있는 모든 요소들의 값을 누적하는, 뭔가 함께 모아놓을 때 사용하는 것.
curr은 배열 하나하나씩 curr에 전달 됨.
prev는 리턴값이 다음 호출 시, prev값으로 연결 됨.
그래서 리턴값을 curr의 score + 앞에서 리턴된 값이 되는 것임.
reduceRight도 있는데 이것은 배열의 제일 뒤에서 부터 시작하는 것.

에로우 함수를 사용해서 간단하게 코드를 작성.
평균값을 구해야 하기 때문에 결과값(result)에서 나누기 students의 갯수를 해준다.
그럼 73.8이라는 평균값이 나옴.
Q10. make a string containing all the scores
result should be:'45, 80, 90, 66, 88'
:학생들의 모든 점수를 스트링으로 변환해서 만들어라.

A10. map+join
map으로 배열을 student의 score로 변환한 후, join으로 스트링 값으로 바꿔준다.

이런식으로 묶어서 filter을 사용해서 점수가 50점이거나 더 높은 학생들만 출력하는 코드를
작성할 수도있음. (함수형 프로그래밍)
보기에도 편하고 작성도 쉬움.
Bonurs! do Q10 scorted in ascending order
result should be: '45, 66, 80, 88, 90'
:낮은 점수가 먼저 나오게해게 해라.

A. sort
이전값과 현재값이 전달이 되는데
-값을 리턴하게 되면 첫번째가 뒤에것보다 작다고 간주되어서 정렬이 됨.
반대로 큰 값부터 정렬하고 싶으면 b-a로 작성하면 됨.
'JS' 카테고리의 다른 글
JavaScript(ES6)|콜백 이해하기 (feat. 콜백지옥) (0) | 2021.04.19 |
---|---|
JavaScript(ES6)|JSON 개념 정리와 활용방법 (0) | 2021.04.15 |
JavaScript(ES6)|배열,APIs 총정리 (0) | 2021.04.13 |
JavaScript(ES6)|Object (0) | 2021.04.11 |
JavaScript(ES6)|클래스와 오브젝트의 차이점, 객체지향 언어 클래스 정리 (0) | 2021.04.10 |