[JS] Assignment - 배열조합으로 새로운 객체 만들기

devCecy·2020년 11월 27일
1
post-thumbnail

1. Assignment

다음 요구사항을 충족하는 객체를 만들어서 return 해주세요.
objData가 갖고 있는 property는 3개 입니다.
sumAmount: 총 판매량
sumReview: 총 리뷰개수
sumLike: 총 좋아요수

이번에는 인자로 받은 데이터를 조합해서, 구조를 바꿔서 리턴합니다.
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]]

위의 예시로 보여드린 배열은 단지 예일뿐,
날짜별 판매량 배열은 365일치 요소가 들어있을 수도 있습니다.
위의 예시로 보여드린 배열은 단지 예일뿐,

날짜별 판매량 배열은 365일치 요소가 들어있을 수도 있습니다.
왜 각각 세 개의 배열을 하나의 객체로 구조를 바꿔야 할까요?
위의 배열에서 4월 1일에 판매량, 리뷰수, 좋아요수를 확인하려면
세 개의 배열을 각각 for문으로 반복해서 날짜를 확인해야 하므로 좋은 구조의 데이터라고 할 수 없습니다.
(날짜가 365일이라고 하면, 세 개의 배열이 각자 365번 돌아야 하니까요)
그래서 세 개의 배열을 사용하기 좋게 객체로 바꿀 것입니다.
객체는 프로퍼티명으로 바로 접근 가능하니까,
날짜만 알면 반복문을 돌지 않아도 바로 데이터를 얻을 수 있습니다.
그래서 객체의 형태로 데이터 구조를 바꾸려는 것입니다.

2. 완성코드

salesArr = [["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 sumAmount = 0;
  let sumReview = 0;
  let sumLike = 0;
  
    for (let i in salesArr){
      sumAmount += salesArr[i][1];
  }
   for (let i in reviewArr){
      sumReview += reviewArr[i][1];
  }
   for (let i in likeArr){
      sumLike += likeArr[i][1];
  }
  let objData = {
    sumAmount:sumAmount,
    sumReview:sumReview,
    sumLike: sumLike
  };
  
  return objData;
}

getData(salesArr,reviewArr,likeArr);

3. 오류가 났던 부분

코드이 오류보다는 문제를 읽고 salesArr,reviewArr,likeArr 배열 속의 각각 겹치는 날짜를 하나로하여, 날짜가 프로퍼티 명이되고, 프로퍼티 값으로 판매량, 리뷰수, 좋아요수를 묶어 나타내라는 것으로 이해해 시간을 많이 할애하고 말았다.😭 그런데 objData가 갖고 있는 프로퍼티는 총3개로 sumAmount, sumReview,sumLike를 가지고 있다는 문장을 보고 내가 생각했던 로직과 일치하지 않아 혼란스러웠다. 그러나 결국 문제에서 정확히 요구하는 것을 도출해 내는것이 관건이였던 것 같다!

profile
🌈그림으로 기록하는 개발자🌈

0개의 댓글