object

Seunghyunkim1·2020년 4월 3일
0

wecode

목록 보기
7/25

let plan1Name = "Basic";
let plan1Price = 3.99;
let plan1Space = 100;
let plan1Data = 1000;
let plan1Pages = 10;
let plan2Name = "Professional";
let plan2Price = 5.99;
let plan2Space = 500;
let plan2Data = 5000;
let plan2Pages = 50;
let plan3Name = "Ultimate";
let plan3Price = 9.99;
let plan3Space = 2000;
let plan3Data = 20000;
let plan3Pages = 500;
alert(plan2Name + "플랜 가격은 한 달에 " + plan2Price + "달러입니다.")

이런식으로 해당 플랜에 대한 변수 나열이 필요합니다.
이 역시 데이터가 늘어나면 늘어날수록 코드도 길어지고 관리하기도 힘들어집니다.
이럴때, 객체를 표현할 수 있다.

참고로 키는 문자열만 가능합니다. 또 한가지, 속성명은 따옴표가 없어도 됩니다
var wrap = { 'ex ample': 'wrap' };

이렇게 접근할 수 있습니다. 마침표를 사용해서 zero 객체 안의 속성들에 접근하는 겁니다. 아니면 [ ] 안에 속성명을 적어서 접근할 수도 있습니다. 하지만 [ ] 안에 적는 것보다는 주로 마침표를 사용합니다. 어쩔 수 없이 [ ] 안에 적어야하는 경우는 위에서처럼 속성명에 띄어쓰기가 들어가 있는 경우입니다. 아까 wrap 객체 안의 'ex ample' 속성에 접근하고 싶을 때는 wrap['ex ample'] 이렇게 접근해야 합니다. 그냥 wrap[ex ample] 하면 오류가 납니다

Assignment
이제까지 성공하셨던 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: 총 좋아요수

초기화 let 쓸변수 = 0; or string일경우, "";
+= , -= , *= , /=

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 sumSales = 0;
 let sumReviews = 0;
 let sumLikes = 0;
 
 for (let i=0; i<salesArr.length; i++) {
    sumSales += salesArr[i][1];
 }
 
 for (let i=0; i<reviewArr.length; i++) {
   sumReviews += reviewArr[i][1];
 }
 
 for (let i=0; i<likeArr.length; i++) {
    sumLikes += likeArr[i][1];
 }
 
 
 let objData = {};
 objData.sumAmount = sumSales;
 objData.sumReview = sumReviews;
 objData.sumLike = sumLikes;
 
 return objData;
  
}

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

0개의 댓글