wecode JS replit 23번 복습

juno·2022년 7월 27일
1

replit 복습

목록 보기
2/4

Assignment

이제까지 하셨던 Assignment 와는 조금 다른 유형입니다. 그 동안에는 특정값을 구해서 리턴 했다면, 이번에는 인자로 받은 데이터를 조합해서, 구조를 바꿔서 리턴합니다.

getData 함수를 구현해주세요!
getData 함수는 세 개의 배열을 인자로 받습니다.

salesArr : 날짜별 판매량
ex) [["20190401", 34], ["20190402", 23], ["20190403", 29]]
reviewArr : 날짜별 리뷰수
ex) [["20190328", 3], ["20190401", 0], ["20190403", 1]]
likeArr : 날짜별 좋아요수
ex) [["20190328", 98], ["20190401", 102], ["20190403", 125]]
다음 요구사항을 충족하는 객체를 만들어서 return 해주세요.

리턴되는 객체는 아래와 같이 3개의 property를 가집니다.

sumAmount : 총 판매량
sumReview : 총 리뷰개수
sumLike : 총 좋아요수

코드

function getData(salesArr,reviewArr,likeArr){
    // 풀이 1
    let sumAmount =0;
    let sumReview =0;
    let sumLike =0;
    // 풀이 2
    for (let i=0; i<salesArr.length; i++ ) {
        sumAmount += Number(salesArr[i][1]);
        console.log(sumAmount);
    }
    for (let i=0; i<reviewArr.length; i++) {
        sumReview += Number(reviewArr[i][1]);
        console.log(sumReview);
    }
    for (let i=0; i<likeArr.length; i++) {
        sumLike += Number(likeArr[i][1]);
        console.log(sumLike);
    }
    // 풀이 3
    return {'sumAmount':sumAmount, 'sumReview':sumReview, 'sumLike':sumLike}
}


let salesArr = [["20190401",34], ["20190402",23], ["20190403",29]]
let reviewArr = [["20190328",3], ["20190401",0], ["20190403",1]]
let likeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]]

let sumDate =getData(salesArr,reviewArr,likeArr)
console.log(sumDate);

풀이

  1. 총 판매량, 리뷰, 좋아요 수를 변수로 선언한다.
  2. 'getData' 함수는 각각 arr를 인자로 받았고,
    첫번째 배열만 보면, salesArr[0][1],salesArr[1][1], salesArr[2][1]의 값은 판매량을 나타낸다.
    해당 인덱스를 접근하여 총 판매량 수에 값을 더하고 해당값을 출력해보자.
    이러한 작업을 3번 반복하여 각 배열의 총 량을 저장했다.
  3. 해당 값을 오브젝트로 key, value로 저장하였다.

복습하면서 깨달은 점, 2가지

1. 배열로 리턴할 때 키값이 자동으로 생성된다.

ES6 객체 초기자

return {'sumAmount':sumAmount, 'sumReview':sumReview, 'sumLike':sumLike}

=== return {sumAmount,sumReview, sumLike}

2. forEach 으로 바꾸고, 함수로 작성한다.

function getData(salesArr,reviewArr,likeArr){ 
	//풀이 1.
    const sum = (arr) =>{ 
        let count = 0;
        // 추가 설명
        arr.forEach((item)=> count += item[1]); 
        console.log(count);
        return count;
    }
    //풀이 2.
    return {            
        sumAmount : sum(salesArr),
        sumReview : sum(reviewArr),
        sumLike : sum(likeArr)
    }
}
let salesArr = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
let reviewArr = [["20190328", 3], ["20190401", 0], ["20190403", 1]];
let likeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]];

console.log(getData(salesArr,reviewArr,likeArr));

풀이

1. sum이라는 변수는 배열을 인자로 받으면 실행되는 메서드(함수)를 할당하였고, 모든 인덱스에 접근합니다.

arr.forEach(item) => count += item[1];
-->arr = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
-->item = ["20190401", 34], ["20190402", 23], ["20190403", 29]
-->item[1] = 34, 23, 29

2. sum(salesArr), sum(reviewArr), sum(likeArr) sum변수에 각 배열을 넣고 함수를 실행시키고, 아래처럼 key, value로 값을 리턴해 준다.

return {
sumAmount : sum(salesArr),
sumReview : sum(reviewArr),
sumLike : sum(likeArr)
}

profile
안녕하세요 인터랙션한 웹 개발을 지향하는 프론트엔드 개발자 입니다. https://kimjunho97.tistory.com => 블로그 이전 중

0개의 댓글