본문 바로가기

TIL

2023.03.10_5일차 과제

 

 

5일차 과제

 

Part 05. 객체 기본문법

1. 객체

2. 참조에 의한 객체 복사

3. 매서드와 this

4. new 연산자와 생성자 함수

 

 


 

객체

 

과제 1 : 객체야 안녕?

 

 

다음 각 동작을 한 줄씩, 코드로 작성해보세요.

  1. 빈 객체 user를 만듭니다.
  2. user에 키가 name, 값이 John인 프로퍼티를 추가하세요.
  3. user에 키가 surname, 값이 Smith인 프로퍼티를 추가하세요.
  4. name의 값을 Pete로 수정해보세요.
  5. user에서 프로퍼티 name을 삭제하세요.

 

답안

 

let user = {

name : "John",

surname : "Smith"

};

user.surname = "Pete";

delete user.name;

 

해답

let user = {};
user.name = "John";
user.surname = "Smith";
user.name = "Pete";
delete user.name;

 

 

 

 

과제 2 : 객체가 비어있는지 확인하기

 

객체에 프로퍼티가 하나도 없는 경우 true, 그렇지 않은 경우 false를 반환해주는 함수 isEmpty(obj)를 만들어 보세요.

아래와 같이 동작해야 합니다.

let schedule = {};

alert( isEmpty(schedule) ); // true

schedule["8:30"] = "get up";

alert( isEmpty(schedule) ); // false

 

 

 

해답

 

객체 프로퍼티를 대상으로 반복문을 실행하다가 프로퍼티가 하나라도 있으면 그 즉시 false를 반환하게 코드를 작성하면 됩니다.

function isEmpty(obj) {
  for (let key in obj) {
    // if the loop has started, there is a property
    return false;
  }
  return true;
}

 

 

 

 

 

 

 

과제 3 : 변하지 않는 객체?

 

const와 함께 선언한 객체를 변경하는 게 가능할까요? 생각을 공유해주세요!

const user = {
  name: "John"
};
// 아래 코드는 에러 없이 실행될까요?
user.name = "Pete";

 

답안

에러 없이 실행 가능

user 가 변경되는 것을 막는 것이지, user 의 내용인 name이 변경되는 것을 막지 않는다.

 

 

 

 

 

과제 4 : 프로터티 합계 구하기

 

모든 팀원의 월급에 대한 정보를 담고 있는 객체가 있다고 해봅시다.

let salaries = {
  John: 100,
  Ann: 160,
  Pete: 130
}

모든 팀원의 월급을 합한 값을 구하고, 그 값을 변수 sum에 저장해주는 코드를 작성해보세요. sum엔 390이 저장되어야겠죠?

주의: salaries가 비어있다면 sum에 0이 저장되어야 합니다.

 

 

 

답안

 

let sum = 0;
for (let key in salaries) {
  sum += salaries[key];  // salaries[key]는 salaries의 key에 해당하는 값
}

alert(sum);

 

 

 

 

 

 

과제 5 : 프로퍼티 값 두 배로 부풀리기

 

객체 obj의 프로퍼티 값이 숫자인 경우 그 값을 두 배 해주는 함수 multiplyNumeric(obj)을 만들어보세요.

// 함수 호출 전
let menu = {
  width: 200,
  height: 300,
  title: "My menu"
};

multiplyNumeric(menu);

// 함수 호출 후
menu = {
  width: 400,
  height: 600,
  title: "My menu"
};

multiplyNumeric은 아무것도 반환하지 않아도 괜찮습니다. 객체 자체를 수정해주기만 하면 됩니다.

힌트) typeof를 사용하면 프로퍼티 값이 숫자인지 확인할 수 있습니다.

 

 

 

배운 것 

typeof "ABC"  문자열은 "string"을 리턴합니다.

typeof 1 
typeof 1.2  숫자는 "number"를 리턴합니다.

typeof { name : "Anne"}  객체는 "object"를 리턴합니다.


typeof null  null은 "object"를 리턴합니다.


typeof [1, 2, 3]  배열은 "object"를 리턴합니다. 

 

 

해답

function multiplyNumeric(obj) {
  for (let key in obj) {
    if (typeof obj[key] == 'number') {
      obj[key] *= 2;
    }
  }
}

 

 


 

 

 

 

 

 

'TIL' 카테고리의 다른 글

2023.03.15  (1) 2023.03.15
2023.03.13  (0) 2023.03.13
2023.03.09_4일차 정리  (0) 2023.03.10
2023.03.09_4일차 과제  (0) 2023.03.09
2023.03.08_3일차 과제  (0) 2023.03.08