[JS] 객체 연습문제
Categories: javascript
📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]
객체 연습문제 - 오답정리
🍒문제 21번은 푸는데 오래걸리고 여러번 수정했음 ⇒ 다음에 꼭 보기.
js는 타입이 없고 코드 칠때 오류가 잘안나서 검증을 꼭 거쳐야 함.
문제8
- 객체를 입력받아 홀수를 값으로 갖는 속성을 모두 제거
- 홀수 판단은
number
타입에만 적용 -
입출력예시
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 }
-
나의 풀이
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; };
- value가 숫자라는 것을 먼저 검증해야함!
-
그래서 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
- 수와 객체를 입력받아 입력받은 수보다 큰 수를 갖는 속성을 모두 제거해야 합니다.
- 별도의 리턴문(return statement)을 작성하지 않습니다.
-
입출력예시
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' }
-
내코드
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; }
-
결과 안나옴
-
점 표기법은 안됨….! →
for...in
루프에서 키가 동적으로 참조되기 때문 Bracket으로 바꿔주면 결과 나옴.
-
문제21
- 문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴
- 띄어쓰기는 제외합니다.
- 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.
- 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다
-
입출력예시
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'
-
내 코드
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; }
- 첨에 공백 검증 못함 → mostFrequentCharacter(‘aabbcc dd’); 넣으면 // 공백 출력되어서
- 다시 str.replaceAll로 모든 공백 제거함.
-
공백 제거하는 방법
1 2 3 4 5
str=”aaa cccdddefef” 1. str.replaceAll(” ”, “”); 2. str.replace(/ /g, “”); - 정규표현식(공백=/ /g 또는 /\s/g) 사용해야함. 3. split과 join 사용
Leave a comment