-
2021/04/11 리액트 스터디 - 사용 언어 : JAVASCRIPT
- 각 함수의 목표 : - cloneBySelf : 배열 안에 있는 각각의 숫자들 뒤에 자기 자신을 한 번 더 붙인 숫자들로 새로운 배열을 만듭니다. - sortDescending : 배열 안에 있는 숫자들을 내림차순으로 정렬합니다. - moreThanFifty : 배열 안에 있는 숫자들 중 50보다 큰 숫자만 뽑아 새로운 배열을 만듭니다. - sumAll : 배열 안에 있는 모든 숫자를 더해 그 값을 반환합니다. - divide : sumAll의 결과의 앞에 0 3개, 뒤에 0 4개를 붙인 문자열을 만들고 이를 각 자리수별로 나누어 새로운 배열을 만듭니다. - 해결 방법 : - cloneBySelf : 처음에 단순히 for문으로 각 인덱스에 추가하면 되지 않을까 생각했는데 map을 사용해 각 인덱스에 같은 값을 추가하는 형식으로 문제를 해결할 수 있었다. - sortDescending : 얕은 복사를 방지하기 위해 slice()함수를 통해 깊은 복사를 하고, sort 함수를 통해 내림차순으로 정렬하였다. - moreThanFifty : filter 함수를 통해 배열에서 50보다 큰 숫자들만을 뽑아 새로운 배열을 만들어 주었다. - sumAll : reduce 함수를 통해 배열 속의 모든 숫자를 더해주었다. 여기서 reduce 함수 속 0은 초기값을 의미한다. - divide : split함수의 인자로 ""를 넣어 각 문자열을 한 글자씩 떼어 배열의 형태로 만들어주었다. - map 함수를 통해 생각보다 많이 간단하게 표현할 수 있다는걸 다시 깨닫게 되었다. map 함수 사용에 친숙해 져야겠다. - 코드 ```javascript class ArrayFunctions { /* 여기에 함수를 작성하면 됩니다. */ static cloneBySelf = (givenArray) => givenArray.slice().map((e) => Number(String(e) + String(e))); static sortDescending = (givenArray) => givenArray.slice().sort((a, b) => b - a); static moreThanFifty = (givenArray) => givenArray.filter((e) => e > 50); static sumAll = (givenArray) => givenArray.reduce((a, b) => a + b, 0); static divide = (givenNumber) => ("000" + givenNumber + "0000").split(""); } /* 이 밑으로는 아무것도 작성하면 안됩니다. */ const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const cloneNumbers = ArrayFunctions.cloneBySelf(numbers); console.log(cloneNumbers); const sortNumbers = ArrayFunctions.sortDescending(cloneNumbers); console.log(sortNumbers); const moreThanFifty = ArrayFunctions.moreThanFifty(sortNumbers); console.log(moreThanFifty); const sumAll = ArrayFunctions.sumAll(moreThanFifty); console.log(sumAll); const divide = ArrayFunctions.divide(sumAll); console.log(divide); ```