Object 응용(replit)

DevOps 블로그·2021년 11월 20일
0
post-custom-banner

Assignment

그 동안에는 특정값을 구해서 return했다면,
이번에는 인자로 받은 데이터를 조합해서, 구조를 바꿔서 리턴합니다.

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일치 요소가 들어있을 수도 있습니다.
왜 각각 세 개의 배열을 하나의 객체로 구조를 바꿔야 할까요?
위의 배열에서 4월 1일에 판매량, 리뷰수, 좋아요수를 확인하려면
세 개의 배열을 각각 for문으로 반복해서 날짜를 확인해야 하므로 좋은 구조의 데이터라고 할 수 없습니다.
(날짜가 365일이라고 하면, 세 개의 배열이 각자 365번 돌아야 하니까요)

그래서 세 개의 배열을 사용하기 좋게 객체로 바꿀 것입니다.

객체는 프로퍼티명으로 바로 접근 가능하니까,
날짜만 알면 반복문을 돌지 않아도 바로 데이터를 얻을 수 있습니다.
그래서 객체의 형태로 데이터 구조를 바꾸려는 것입니다.

다음 요구사항을 충족하는 객체를 만들어서 return 해주세요.

objData가 갖고 있는 property는 3개 입니다.

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

배열 요소를 들여다 보면, 배열[0][0]에는 날짜 데이터가 들어가고 배열 [0][1]에는 판매량, 리뷰 수, 좋아요 수 등의 데이터가 들어간다.

이것을 다시 말하자면, 반복문에서 매번 배열 [0][1]을 더해주면 된다는 것.

배열의 길이 만큼 반복을 해주는 것은 아래와 같은 형식
해당 변수에 들어갈 값을 추출 하기위 한 for문의 형식(각 인자의 길이만큼 반복되는 for문)

var arr = ['a', 'b', 'c'];

for(var i = 0; i < arr.length; i++) {
  console.log(arr[i])
} // "a" "b" "c" c출력됨. [0] [1] [2] 값 출력

-출처: https://www.youtube.com/watch?v=0MmKE1A2pB4

그리고 합을 구하는 것이기에 초기값을 전부 0으로 설정


이러한 것을 정리해서 다시 코드를 짜보면...

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



function getData(salesArr,reviewArr,likeArr){
  let salesSum = 0;
  let reviewsSum = 0;
  let likesSum = 0;

  for(i = 0; i < salesArr.length; i++){
    salesSum += salesArr[i][1];
  };

  for(i = 0; i < reviewArr.length; i++){
    reviewsSum += reviewArr[i][1];
  };

  for(i = 0; i < likeArr.length; i++){
    likesSum += likeArr[i][1];
  };

  

  let myObj = {
    sumAmount: salesSum,
    sumReview: reviewsSum,
    sumLike:likesSum
  };

  return myObj;
}




// 아래 코드를 수정하거나 삭제하지 마세요.
module.exports = {getData}

// 아래 코드를 수정하거나 삭제하지 마세요.
module.exports = {getData}



profile
IT 엔지니어를 향해 살아가는, 공부하는 기록들을 모아두고 있습니다.
post-custom-banner

0개의 댓글