[JavaScript] 객체 1~15번

유아현·2022년 11월 6일
0

JavaScript

목록 보기
11/25
post-thumbnail

1. getProperty

  • 객체와 키를 입력받아 키에 해당하는 값을 리턴
  • 입력받은 키에 속한 값을 리턴
  • 키에 해당하는 값이 없을 경우, undefined를 리턴
function getProperty(obj, property) {
  return obj[property];
}

2. addProperty

  • 객체와 키를 입력받아 키에 해당하는 값을 true로 설정
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function addProperty(obj, property) {
  return obj[property] = true;
}

3. addPropertyAndValue

  • 객체와 키, 값을 입력받아 키에 값을 할당
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function addPropertyAndValue(obj, property, value) {
  return obj[property] = value;
}

4. addObjectProperty

  • 두 개의 객체와 키를 입력받아 첫번째 객체의 키에 두번째 객체를 할당
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function addObjectProperty(obj1, property, obj2) {
  return obj1[property] = obj2;
}

5. removeProperty

  • 객체와 키를 입력받아 키가 가리키는 속성(property)을 제거
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function removeProperty(obj, property) {
  return delete obj[property];
}

6. removeNumberValues

  • 객체를 입력받아 number 타입의 값을 갖는 속성을 모두 제거
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function removeNumberValues(obj) {
  for(let i in obj){
    if (typeof obj[i] === 'number'){
      delete obj[i];
    }
  }
  return obj;
}

7. removeArrayValues

  • 객체를 입력받아 배열을 값으로 갖는 속성을 모두 제거
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function removeArrayValues(obj) {
  for( let i in obj ){
    if( Array.isArray(obj[i]) === true ){
      delete obj[i];
    }
  }
  return obj;
}

8. removeOddValues

  • 객체를 입력받아 홀수를 값으로 갖는 속성을 모두 제거
  • 별도의 리턴문(return statement)을 작성하지 않습니다
  • 홀수 판단은 number 타입에만 적용
function removeOddValues(obj) {
  for(let i in obj){
    if ( obj[i] % 2 === 1 && typeof obj[i] === 'number'){
      delete obj[i];
    }
  }
  return obj;
}

9. isPersonOldEnoughToVote

  • 객체를 입력받아 객체가 가진 age 속성값이 합법적으로 투표할 수 있는 나이(18세 이상)인지 여부를 리턴
  • boolean 타입을 리턴
function isPersonOldEnoughToVote(person) {
  for(let i in person){
    if(person[i] >= 18){
      return true;
    }
  }
  return false;
}

10. addFullNameProperty

  • 객체를 입력받아 'firstName', 'lastName' 속성값 사이에 띄어쓰기 하나를 둔 단일 문자열을 fullName 속성값으로 할당
  • 별도의 리턴문(return statement)을 작성하지 않습니다
function addFullNameProperty(obj) {
   obj['fullName'] = obj['firstName'] + ' ' + obj['lastName'];

}

11. removeNumbersLargerThan

  • 수와 객체를 입력받아 입력받은 수보다 큰 수를 갖는 속성을 모두 제거
  • 별도의 리턴문(return statement)을 작성하지 않습니다
  • 대소 비교는 number 타입에만 적용
function removeNumbersLargerThan(num, obj) {
  for(let i in obj){
    if(obj[i] > num && typeof obj[i] === 'number'){
      delete obj[i];
    }
  }
}

12. countNumberOfKeys

  • 객체를 입력받아 속성의 개수를 리턴
  • number타입을 리턴
function countNumberOfKeys(obj) {
  let count = 0;
  for(let i in obj){
    count++
  }
  return count;
}

13. printObject

  • 객체를 입력받아 키, 값 쌍을 표현하는 문자열을 리턴

  • 각 문자열은 한 줄에 키: 값 형태로 구성되며, 각 문자열 끝에는 줄바꿈 문자가 포함되어야 합니다

  • string 타입을 리턴

  • 입출력 예시

const obj = { name: 'Steve', age: 13, gender: 'Male' };
let output = printObject(obj);
console.log(output); // -->
/*
name: Steve
age: 13
gender: Male
*/
  • 풀이
function printObject(obj) {
  let result ='';
  for(let i in obj){
    result += `${i}: ${obj[i]}\n`;
  }
  return result;
}

14. getElementOfArrayProperty

  • 객체, 키, 수를 입력받아 주어진 키에 해당하는 값이 배열인 경우, 수가 가리키는 인덱스에 해당하는 요소를 리턴
  • 배열의 요소를 리턴
  • 주어진 키에 해당하는 값이 배열이고, 주어진 수가 배열의 범위를 벗어나지 않는 경우에만 배열의 요소를 리턴
  • 그 외의 경우, undefined를 리턴
function getElementOfArrayProperty(obj, key, index) {
  let arrProperty = obj[key];
  for(let i in arrProperty){
    if(Array.isArray(arrProperty) === true){
      return arrProperty[index];
    }
  }
  return undefined;
}

15. select

  • 배열과 객체를 입력받아 배열의 각 요소들을 객체의 키로 했을 때 그 값을 추출하여 만든 새로운 객체를 리턴
  • 객체를 리턴
  • 입력받은 객체에 존재하지 않는 키는 무시
  • 입력받은 객체를 수정하지 않아야 합니다
function select(arr, obj) {
  // 배열 arr와 객체 obj를 입력받아서
  // arr의 각 요소들을 obj의 키로 했을 때
  // 그 값을 추출하여 만든 새로운 객체 리턴
  let a = {}
  for(let i of arr){
    for(let j in obj){
      if ( i === j){
      a[j] = obj[j]
      }
    }
  }
  return a;
}

0개의 댓글