[JS] 객체 연습문제

Updated:

Categories:

Tags: ,

📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]

객체 연습문제 - 오답정리

🍒문제 21번은 푸는데 오래걸리고 여러번 수정했음 ⇒ 다음에 꼭 보기.

js는 타입이 없고 코드 칠때 오류가 잘안나서 검증을 꼭 거쳐야 함.

문제8

  1. 객체를 입력받아 홀수를 값으로 갖는 속성을 모두 제거
  2. 홀수 판단은 number 타입에만 적용
  3. 입출력예시

    1
    2
    3
    4
    5
    6
    7
    8
    
     const obj = {
       a: 2,
       b: 3,
       c: 4,
     };
        
     removeOddValues(obj);
     console.log(obj); // --> { a: 2, c: 4 }
    
  4. 나의 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     function removeOddValues(obj) {
         for(let key in obj){
            if(obj[key]%2===1){
                 delete obj[key];
            }
         }
         return obj;
       };
        
    
    1. value가 숫자라는 것을 먼저 검증해야함!
    2. 그래서 typeof로 값이 숫자임도 같이 검증해주기

      1
      2
      3
      4
      5
      6
      7
      8
      
       function removeOddValues(obj) {
         for(key in obj) {
       	  if(typeof obj[key] === 'number' && obj[key] % 2 === 1) {
       		  delete obj[key];
       	  }
         }
         return obj;
       }
      

문제 11

  1. 수와 객체를 입력받아 입력받은 수보다 큰 수를 갖는 속성을 모두 제거해야 합니다.
  2. 별도의 리턴문(return statement)을 작성하지 않습니다.
  3. 입출력예시

    1
    2
    3
    4
    5
    6
    7
    8
    
     const obj = {
     a: 8,
     b: 2,
     c: 'montana',
     };
        
     removeNumbersLargerThan(5, obj);
     console.log(obj); // --> { b: 2, c: 'montana' }
    
  4. 내코드

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
     function removeNumbersLargerThan(num, obj) {
     	for(let key in obj){
     		if(typeof obj.key==='number' && obj.key> num){
     			delete obj.key;
     		}
     	}
     	return obj;
     }
        
    
    • 결과 안나옴

      Untitled

    • 점 표기법은 안됨….! → for...in 루프에서 키가 동적으로 참조되기 때문 Bracket으로 바꿔주면 결과 나옴.

문제21

  1. 문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴
    • 띄어쓰기는 제외합니다.
    • 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.
    • 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다
  2. 입출력예시

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     let output = mostFrequentCharacter('apples not oranges');
     console.log(output); // --> 'p'
        
     output = mostFrequentCharacter('hello world');
     console.log(output); // --> 'l'
        
     output = mostFrequentCharacter('   ');
     console.log(output); // --> ''
        
     output = mostFrequentCharacter('');
     console.log(output); // --> ''
        
     output = mostFrequentCharacter('abba');
     console.log(output); // --> 'b'
    
  3. 내 코드

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
     function mostFrequentCharacter(str) {
         let obj={};
         let maxValue=0;
         let result="";
            
         if(str.length===0){return "";}
         str.replaceAll(' ','');
         for(let i =0;i <str.length;i++){
             let key = str.charAt(i);
             if(key in obj){
                 obj[key]++;    
             }else{
                 obj[key]=1;
             }
             if(obj[key] > maxValue){
                 maxValue = obj[key];
                  result= key;
        
              }
         }
         return result;
     } 
    
    1. 첨에 공백 검증 못함 → mostFrequentCharacter(‘aabbcc dd’); 넣으면 // 공백 출력되어서
    2. 다시 str.replaceAll로 모든 공백 제거함.
    3. 공백 제거하는 방법

      1
      2
      3
      4
      5
      
       str=aaa    cccdddefef
              
       1. str.replaceAll( , “”);
       2. str.replace(/ /g, “”); - 정규표현식(공백=/ /g 또는 /\s/g) 사용해야함.
       3. split과 join 사용
      

javascript 카테고리 내 다른 글 보러가기

Leave a comment