Wecode-JavaScript-23.Objetct

Dave Ahn·2022년 10월 23일
1
post-thumbnail

23.Object

문제

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 : 총 좋아요수


정답 :

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를 생성해주자.

객체이름.프로퍼티 이름 or 객체이름["프로퍼티이름"]

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

0개의 댓글