Hayden's Archive

[자바스크립트] 객체 본문

Algorithm

[자바스크립트] 객체

_hayden 2019. 12. 26. 20:23

코드스테이츠 코플릿 문제

[4. 객체] 02_addProperty

addProperty 함수를 작성하세요

파라미터로 객체와 키를 받는 addProperty 함수가 있습니다. 이 함수는 주어진 객체에, 키 이름으로 속성을 만들고 값을 true로 설정합니다.

 

내가 작성한 코드

function addProperty(obj, propertyName) {
  obj[propertyName] = true;
  return;
}

 


 

[4. 객체] 03_addPropertyAndValue

addPropertyAndValue 함수를 작성하세요

파라미터로 객체와 키 및 새로운 값을 받는 addPropertyAndValue 함수가 있습니다. 이 함수는 주어진 객체에, 키 이름으로 속성을 만들고 값을 설정합니다.

 

내가 작성한 코드

function addPropertyAndValue(obj, propertyName, value) {
  obj[propertyName] = value;
  return;
}

 


 

[4. 객체] 04_addObjectProperty

addObjectProperty 함수를 작성하세요

파라미터로 두 개의 객체와 키를 받는 addObjectProperty 함수가 있습니다. 이 함수는 주어진 첫번째 객체에, 키 이름으로 속성을 만드는데, 그 값은 두번째 객체로 설정합니다.

객체의 키 값은 또다른 객체가 될 수 있음을 기억하세요.

 

내가 작성한 코드

function addObjectProperty(obj1, propertyName, obj2) {
  obj1[propertyName] = obj2;
  return;
}

 


 

[4. 객체] 05_removeProperty

Write a function called "removeProperty". ("removeProperty" 함수를 작성하세요.)

Given an object and a key, "removeProperty" removes the given key from the given object. (객체와 키가 주어졌을때, "removeProperty" 함수는 주어진 키에 해당하는 객체의 속성값을 제거해야 합니다.)

 

내가 작성한 코드

function removeProperty(obj, propertyName) {
  delete obj[propertyName];
  return;
}

 


 

[4. 객체] 06_isPersonOldEnoughToVote

Write a function called "isPersonOldEnoughToVote". ("isPersonOldEnoughToVote" 함수를 작성하세요.)

Given a "person" object, that contains an "age" property, "isPersonOldEnoughToVote" returns whether the given person is old enough to vote. ("age" 속성을 가지고 있는 "person" 객체가 주어졌을때, "isPersonOldEnoughToVote" 함수는 그 사람이 미국에서 합법적으로 투표를 할 수 있는 나이인지를 반환해야 합니다.)

Notes:

  • The legal voting age in the United States is 18. (- 미국에서 합법적으로 투표를 할 수 있는 나이는 18살 입니다.)

 

내가 작성한 코드

function isPersonOldEnoughToVote(person) {
  if(person['age'] >= 18){
    return true;
  }
  else{
    return false;
  }
}

 


 

[4. 객체] 07_addFullNameProperty

Write a function called "addFullNameProperty". ("addFullNameProperty" 함수를 작성하세요.)

Given an object that has a "firstName" property and a "lastName" property, "addFullNameProperty" returns a "fullName" property whose value is a string with the first name and last name separated by a space. ("firstName"과 "lastName" 속성을 가지고 있는 객체가 주어졌을때, "addFullNameProperty" 함수는 이름과 성이 띄어쓰기 하나를 사이에 둔 단일 문자열 "fullName" 속성을 설정해야 합니다.)

 

내가 작성한 코드

function addFullNameProperty(obj) {
  obj['fullName'] = obj['firstName'] + " " + obj['lastName'];
  return;
}

 


 

[4. 객체] 08_removeNumbersLargerThan

"removeNumbersLargerThan" 함수를 작성하세요.

숫자와 객체가 주어졌을때, "removeNumbersLargerThan" 함수는 주어진 객체에서 주어진 숫자보다 큰 모든 숫자 속성을 제거합니다.

  • 객체를 탐색하는 반복문은 for ... in 구문을 이용합니다
  • for ... in 구문은 MDN을 이용해 검색해보세요.

 

내가 작성한 코드

function removeNumbersLargerThan(num, obj) {
  for (key in obj){
    if(obj[key] > num){
      delete obj[key];
    }
  }
}

 

코드 리뷰

처음에 for ... in이 뭔지 몰라서 헤맸었다.(불친절한 코드스테이츠...) MDN 사이트에 들어갔는데  for (variable in object) { ... } 이렇게만 나와있어서 어떻게 사용하는 코드인지 초반에 이해를 못했다. 꼼꼼히 읽고 해석한 결과 위 코드를 예를 들어 설명하자면, obj라는 객체(object)에 있는 모든 키(key)들을 key라는 변수로 지정해주고 중괄호 안의 명령들을 실행하는 것이다.(이 때 객체의 키는 꼭 key라는 변수가 아니어도 되고 다른 변수로도 지정이 가능하다. 난 그냥 보고 편하려고 저렇게 지정했음.) 다시 말해, 객체 obj에 있는 모든 key는 key라는 변수로 지정되고 조건문을 통해 모든 key값이 주어진 숫자 num보다 큰 지 검사하여 클 경우에 key값을 지울 수 있게끔 한 것이다.

 


 

[4. 객체] 09_removeOddValues

"removeOddValues" 함수를 작성하세요.

객체가 주어졌을때, "removeOddValues" 함수는 주어진 객체의 속성값이 홀수인 속성을 모두 제거합니다.

  • 객체를 탐색하는 반복문은 for ... in 구문을 이용합니다
  • for ... in 구문은 MDN을 이용해 검색해보세요.

 

내가 작성한 코드

function removeOddValues(obj) {
  for(key in obj){
    if(obj[key] % 2 === 1){
      delete obj[key];
    }
  }
}

 


 

[4. 객체] 10_countNumberOfKeys

Write a function called "countNumberOfKeys". ("countNumberOfKeus" 함수를 작성하세요.)

Given an object, "countNumberOfKeys" returns how many properties the given object has. (객체가 주어졌을때, "countNumberOfKeys" 함수는 객체안에 있는 속성들의 갯수를 반환합니다.)

 

내가 작성한 코드

function countNumberOfKeys(obj) {
  let count = 0;
  for(key in obj){
    count += 1;
  }
  return count;
}

 

코드 리뷰

처음에 이 문제를 보고 막막했다. 앞서 배운 반복문 식으로 문제를 풀려면 n이라는 변수를 두고 일정 범위까지 숫자를 대입해서 count를 1씩 늘려가면 되는데 객체는 숫자를 대입할 수도 없어! 하지만 왠지 for ... in 구문으로 풀어야 할 것 같았고 생각대로 코드를 작성해보니 통과...! for ... in 도 결국 반복문이다. obj의 key 값을 다 불러오는 동안에는 count를 1씩 늘려갈 수 있는 거지. 이렇게 또 하나 배워간다.