JS레플릿 23.Object_10.20

송철진·2022년 10월 20일
0

Assignment

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

결과

1. 그냥 평문으로

function getData(salesArr,reviewArr,likeArr){
  let result = {
    sumAmount : salesArr[0][1]+salesArr[1][1]+salesArr[2][1],
    sumReview : reviewArr[0][1]+reviewArr[1][1]+reviewArr[2][1],
    sumLike : likeArr[0][1]+likeArr[1][1]+likeArr[2][1]
  }
  return result;
}

let a = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
let b = [["20190328", 3], ["20190401", 0], ["20190403", 1]];
let c = [["20190328", 98], ["20190401", 102], ["20190403", 125]];

console.log(getData(a,b,c));
// 아래 코드를 수정하거나 삭제하지 마세요.
module.exports = {getData}

2. for문으로

function getData(salesArr,reviewArr,likeArr){
  let result = {
    sumAmount : getDataSum(salesArr),
    sumReview : getDataSum(reviewArr),
    sumLike : getDataSum(likeArr)
  }
  return result; 
}
function getDataSum(data){
  let result = 0;
  for(let i=0;i<data.length;i++){
    result += data[i][1];
  }
  return result;
}

let a = [["20190401", 34], ["20190402", 23], ["20190403", 29]];
let b = [["20190328", 3], ["20190401", 0], ["20190403", 1]];
let c = [["20190328", 98], ["20190401", 102], ["20190403", 125]];

console.log(getData(a,b,c));
// 아래 코드를 수정하거나 삭제하지 마세요.
module.exports = {getData}

Today I Learn

1. Object (객체)

객체는 이름과 값으로 구성된 프로퍼티들의 집합입니다

객체의 선언과 사용

  • 객체는 {}(중괄호)로 감싸져 있고,
    콜론으로 구분된 이름 / 값 의 쌍들이, 쉼표로 분리된 목록의 형태입니다.
  • property 이름은 중복될 수 없다.
  • property이름과 property값 사이에 : (콜론)으로 구분한다.
  • property를 추가할 때는 , (쉼표)를 붙여준다.
  • property 값에는 어느 type이나 가능하다(string, number, array, object, function..)

해당 객체의 property값을 접근하는 방법:

  • 마침표(.) 연산자를 사용하며, 접근하려는 객체명은 왼쪽에, 프로퍼티 명은 오른쪽에 위치합니다.
  • 대괄호([])를 사용하여, 접근하려는 객체명은 왼쪽에, 프로퍼티 명은 쌍따옴표("")와 함께 대괄호 안에 작성합니다.

대괄호 안에 변수를 넣어 값을 호출:

let myObj = {
  property1: "hello",
  property2: [1,2,3,4,5],
  property3: {
    childproperty: "haha"
  }
};

let name = "property";
console.log(myObj[name+"1"]); // "hello"
console.log(myObj[name+"3"]["child"+name]); // "haha"

property 값을 수정:

let name = "property1";
myObj[name] = ["hi", "hello"];
console.log(myObj.property1); // property1: ["hi", "hello"]

새로운 property를 추가:

myObj.property3.siblingproperty = [3, 6, 9];
console.log(myObj); 
/*{
    property1: "hello",
    property2: [1,2,3,4,5],
    property3: {
      childproperty: "haha",
      siblingproperty: [3, 6, 9] // 추가된 프로퍼티
    }
  }
*/  

배열의 첫번째 요소를 접근:

let name = "property1";
myObj[name] = ["hi", "hello"];
console.log(myObj.property1[0]); // "hi"

존재하지 않는 프로퍼티를 썼을 때:

let objData = {
  books: {
    info: [
      { name: "JS Guide" }, 
      { name: "HTML Guide" }
    ]
  }
};
let bookName = objData.books.info[1].name;
console.log(bookName); // "HTML Guide"
let errorName = objData.book.info[1].name;
console.log(errorName);
// Uncaught TypeError: 
// Cannot read properties of undefined (reading 'info') 
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글