문제
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 : 총 좋아요수
saleArr = [["20190401", 34], ["20190402", 23], ["20190403", 29]]
reviewArr = [["20190328", 3], ["20190401", 0], ["20190403", 1]]
likeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]]
function getData(salesArr,reviewArr,likeArr){
let obj ={};
obj.sumAmount = salesArr[0][1] + salesArr[1][1] + salesArr[2][1];
obj.sumReview = reviewArr[0][1] + reviewArr[1][1] + reviewArr[2][1];
obj.sumLike = likeArr[0][1] + likeArr[1][1] + likeArr[2][1];
return obj;
}
우선 getData라는 함수가 받은 세 개의 인자를 그대로 사용해주자
saleArr = [["20190401", 34], ["20190402", 23], ["20190403", 29]]
reviewArr = [["20190328", 3], ["20190401", 0], ["20190403", 1]]
likeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]]
그 다음 조건은 객체를 만들어서 리턴 해달라는 내용인데
이 리턴되는 객체는 "sumAmount/sumReview/sumLike 라는 property를 가진다."는 내용이 있다.
우선 빈 객체를 만들어주자
let obj = {} -> 빈 객체
그 다음 이 비어있는 객체 obj는 "sumAmount/sumReview/sumLike 라는 property를 가진다." 라고 하였으니 해당 객체에 property를 생성해주자.
obj.sumAmount
obj.sumReview
obj.sumLike
이렇게 생성된 프로퍼티는 판매량 / 리뷰 개수 / 좋아요 수 를 입력받으니까
위에 있는 변수 saleArr / reviewArr / likeArr 에서 날짜를 제외한 정보만 받게되면 [0][1],[1][1],[2][1]...[n][1]번째 내용이다.
따라서 위의 변수는 3개의 배열이을 인자로 받았으니
obj.sumAmount = salesArr[0][1] + salesArr[1][1] + salesArr[2][1];
obj.sumReview = reviewArr[0][1] + reviewArr[1][1] + reviewArr[2][1];
obj.sumLike = likeArr[0][1] + likeArr[1][1] + likeArr[2][1];
를 입력해주면 된다.
그리고 마지막에 객체 obj를 리턴해주면 끝난다.
이 문제같은 경우 ex)에 작성된 내용을 가져와서 그대로 사용하여 풀었지만
만약에 ex) 정보를 사용하지 않고 풀어본다면 반복문을 사용하여 풀어야 한다.
function getData(salesArr,reviewArr,likeArr){
let amountNum = 0;
let reviewNum = 0;
let likeNum = 0;
for (i=0; i<salesArr.length; i++){
amountNum += salesArr[i][1];
}
for (i=0; i<reviewArr.length; i++){
reviewNum += reviewArr[i][1];
}
for (i=0; i<likeArr.length; i++){
likeNum += likeArr[i][1];
}
let obj = {
sumAmount: amountNum,
sumReview: reviewNum,
sumLike: likeNum
};
return obj
}
let testSaleArr = [["20190401", 34], ["20190402", 23], ["20190403", 29]]
let testReviewArr = [["20190328", 3], ["20190401", 0], ["20190403", 1]]
let testLikeArr = [["20190328", 98], ["20190401", 102], ["20190403", 125]]
let test = getData(testSaleArr,testReviewArr,testLikeArr)
console.log(test)
console.log(testSaleArr)
console.log(testReviewArr)
console.log(testLikeArr)
우선 amountNum / reviewNum / likeNum 이라는 변수를 선언해주고 이들의 값을 0으로 맞춰준다.
그 다음 반복문을 사용하여 주어진 배열(salesArr / reviewArr / likeArr)에 길이 만큼 증가시켜주자.
for (i=0; i<salesArr.length; i++){
amountNum += salesArr[i][1];
}
-> i는 0부터 시작하고 i는 salesArr라는 배열의 길이보다 작고 i는 1씩 증가된다.
-> 지문에서 우리가 구해야 할 것은 "총 판매량 / 리뷰 개수 / 좋아요 수" 이니까 모든 값을 더하여 할당 받은 값을 구해야한다.
-> 앞서 선언해주었던 변수들을 (값=0) "+=" (더하기 할당 : 오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당) 을 사용하여 배열 salesArr의 [i][1] (i번째 판매량)번째 요소를 더하여 할당 해준다.
for (i=0; i<reviewArr.length; i++){
reviewNum += reviewArr[i][1];
}
for (i=0; i<likeArr.length; i++){
likeNum += likeArr[i][1];
}
이렇게 각 변수들은 배열의 길이만큼 반복된 [i]번째 판매량[1]을 더하여 할당받게되고.(+=)
그 후 obj라는 객체를 만들어주고 이 객체에 지문에서 요구하였던 key에
(Key) sumAmount : 총 판매량 = amountNum (Property)
(Key) sumReview : 총 리뷰 개수 = reviewNum (Property)
(Key) sumLike : 총 좋아요 수 = likeNum (Property)
위와 같은 property가 할당된다.
그 후 obj라는 객체를 리턴 해주면 끝난다.
확실한 마무리를 위하여 테스트를 해보자,
우선 테스트로 사용될 변수(testSaleArr / testReviewArr / testLikeArr)들을 선언하고 변수에대한 날짜별 데이터를 임의로 입력해주고,
test라는 변수를 선언한 뒤 그 값으로 앞서 선언했던 변수(testSaleArr/testReviewArr/testLikeArr)의 데이터를 getDeta 메서드를 사용하여 받아준 뒤
console.log로 테스트 하나 하나 찍어보면 정상적으로 출력되는것을 볼 수 있다.
{ sumAmount: 86, sumReview: 4, sumLike: 325 }
-> 총 판매량 / 총 리뷰 수 / 총 좋아요 수
2022.10.23(일) 12:57 Dave Ahn