객체 Object 기초 1

최정민·2021년 7월 10일
1

JavaScript

목록 보기
3/9
post-thumbnail

1. 객체 object

  • 서로 연관된 변수와 함수를 grouping하고 이름을 붙인것. 객체는 {}로 감싸져 있고 콜론:으로 구분이름(key), 값(value)의 쌍들이, 쉼표,로 분리된 목록의 형태이다.
    => 객체는 이름과 값으로 구성된 property들의 집합
  • property 이름(key)은 중복될 수 없다.
  • property 값(value)에는 어느 type이나 가능하다(string, number, array, object, function 등)

- jungmin이라는 객체만들기

let jungmin = {
name: "jungmin",
nickname:"mango",
old:24
}
console.log(jungmin);  
console.log(jungmin.nickname); //`객체명.key`를 출력하면 value값이 나온다. 
console.log(jungmin["old"])

👇🏻 결과
{ name: 'jungmin', nickname: 'mango', old: 24 }
'mango'
24

1. 객체 value값 얻기

.[]를 이용해서 얻을 수 있다.

1-1 . 사용하기

객체명.property이름(key)를 출력하면 property value값이 나온다.
ex)console.log(jungmin.nickname)
-> mango

1-2 [] 사용하기

객체명["property이름(key)"]
ex)jungmin["old"]
-> 24
-위처럼 프로퍼티 명을 쌍따옴표("")와 함께 대괄호 안에 작성합니다.
-대괄호 안에는 직접적인 property이름(key)가 아니더라도 변수가 들어갈 수 있다.

let jungmin = {
name: "jungmin",
nickname:"mango",
old:24
}
let who = "name"
jungmin[who]

👇🏻 결과
'jungmin'

2. property의 value값을 수정하거나 property를 추가 또는 삭제하기

2-1 추가 또는 수정하기

원래 있던 property명에 새로운 value값을 할당해주면 값이 변경되고
ex)jungmin.name="choi jung min" or jungmin["name"]="choi jung min"
새로운 property명에 새로운 valuer값을 할당해주면 새로운 property가 생성된다. ex)jungmin.mbti="ESFJ" or jungmin["mbti"]="ESFJ"

let jungmin = {
name: "jungmin",
nickname:"mango",
old:24
}
jungmin.mbti="ESFJ"
jungmin.name = "choi jungmin"
console.log(jungmin)

👇🏻 결과

{
  name: 'choi jungmin',
  nickname: 'mango',
  old: 24,
  mbti: 'ESFJ'
}

2-2 삭제하기

객체명.property 앞에 delete를 사용해 해당되는 property를 삭제할 수 있다.
ex)delete jungmin.name

let jungmin = {
name: "jungmin",
nickname:"mango",
old:24
}
delete jungmin.name
console.log(jungmin)

👇🏻 결과

{ nickname: 'mango', old: 24 }

예제

getData 함수를 구현하기

  • getData 함수는 세 개의 배열을 인자로 받습니다.
    1. salesArr : 날짜별 판매량
      • ex) [["20190401", 34], ["20190402", 23], ["20190403", 29]]
    2. reviewArr : 날짜별 리뷰수
      • ex) [["20190328", 3], ["20190401", 0], ["20190403", 1]]
    3. likeArr : 날짜별 좋아요수
      • ex) [["20190328", 98], ["20190401", 102], ["20190403", 125]]
  • 다음 요구사항을 충족하는 3개의 property를 가지는 객체를 만들어서 return 해주세요.
    1. sumAmount : 총 판매량
    2. sumReview : 총 리뷰개수
    3. sumLike : 총 좋아요수


      나의 풀이 1 😛
function getData(salesArr, reviewArr, likeArr){
let totalSales=0;
for(let i = 0; i < salesArr.length; i++){
  totalSales+=salesArr[i][1];
}
let totalReview=0;
for(let i = 0; i < reviewArr.length; i++){
  totalReview+=reviewArr[i][1];
}
let totalLike=0;
for(let i = 0; i < likeArr.length; i++){
  totalLike+=likeArr[i][1];
}
  return {
     sumAmount: totalSales,
     sumReview: totalReview,
     sumLike: totalLike
  }
}
console.log(getData([["20190401", 34], ["20190402", 23], ["20190403", 29]],[["20190328", 3], ["20190401", 0], ["20190403", 1]],[["20190328", 98], ["20190401", 102], ["20190403", 125]])))

👇🏻 결과

{ sumAmount: 86, sumReview: 4, sumLike: 325 }

나의 풀이 2 😛
객체를 조금 더 알게되어 객체를 사용하여 구현을 시도했는데 어떤 풀이가 더 효율적인지 모르겠다 ! 객체를 사용해보는 거에 의의를 두자 ^^

function get1Data(salesArr, reviewArr, likeArr){
let obj={
    amount:salesArr,
    review:reviewArr,
    like:likeArr
    };
 let result= {};
 let total = 0;   
 let resultKey = [ "sumAmount","sumReview","sumLike"];
 for (let i in Object.keys(obj)){    //Object.keys(obj)=[ 'amount', 'review', 'like' ]
    for(let j in obj[Object.keys(obj)[i]] ){
      total+=obj[Object.keys(obj)[i]][j][1];
  }
    result[resultKey[i]]=total;    //result객체에 각 sumAmount,sumReview,sumLike(key값)에 
     total = 0;                     //각 결과(value값)을 할당한 property 생성
  } // 계산한 총합값을 넣어주고 다음 인자의 총합값을 계산하기위해 total값을 0초기화함.
 return result;
}
console.log(getData([["20190401", 34], ["20190402", 23], ["20190403", 29]],[["20190328", 3], ["20190401", 0], ["20190403", 1]],[["20190328", 98], ["20190401", 102], ["20190403", 125]])))

👇🏻 결과

{ sumAmount: 86, sumReview: 4, sumLike: 325 }
profile
나 다운 것, 가장 아름다운 것

0개의 댓글