• 2021/04/11 리액트 스터디 image - 사용 언어 : 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);
    
    ```