removeNumberValues
문제
객체를 입력받아 number 타입의 값을 갖는 속성을 모두 제거해야 합니다.
입력
인자 1 : obj
- 임의의 속성을 갖는 객체
출력
- 별도의 리턴문(return statement)을 작성하지 않습니다.
입출력 예시
const obj = {
a: 2,
b: 'remaining',
c: 4,
};
removeNumberValues(obj);
console.log(obj); // --> { b: 'remaining' }
힌트
- 자바스크립트에서 object를 순회하는 방법을 검색해 봅니다. (js how to iterate object) for...in 외에 object 순회를 할 수 있는 방법이 있을까요?
나의 코드
function removeNumberValues(obj) {
// 함수의 매개변수에 프로퍼티가 없을 때 어떻게 불러올 것인가?
// for...in 문에서 let prop 해버리면 됨
for (let prop in obj) {
if (typeof (obj[prop]) === 'number') {
delete obj[prop];
}
}
}
// Object.entries() 알아보기
getAllButLastElementOfProperty
문제
객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 마지막 요소가 제거된 새로운 배열을 리턴해야 합니다.
입력
인자 1 : obj
- 임의의 객체
인자 2 : key
- string 타입의 키
출력
- 배열을 리턴해야 합니다.
주의 사항
- 주어진 키에 해당하는 값이 배열이고, 빈 배열이 아닌 경우에만 마지막 요소가 제거된 배열을 리턴해야 합니다.
- 그 외의 경우, 빈 배열을 리턴해야 합니다.
- 입력받은 객체를 수정하지 않아야 합니다.
입출력 예시
const obj = {
key: [1, 2, 3],
};
let output = getAllButLastElementOfProperty(obj, 'key');
console.log(output); // --> [1,2]
나의 코드
function getAllButLastElementOfProperty(obj, key) {
let newObj = JSON.parse(JSON.stringify(obj)) // 객체 깊은 복사. 원본은 그대로 두고 복사된 애를 변경
if (!Array.isArray(newObj[key]) || !newObj[key].length) return []
else newObj[key].pop()
return newObj[key]
}
[JavaScript] 자바스크립트객체 복사하기 (앝은 복사, 깊은 복사)
자바스크립트객체(Object)는 Key(키):Value(값)의 1개 또는 여러 쌍으로 구성됩니다. Value(값)에는 숫...
blog.naver.com
countAllCharacters
문제
문자열을 입력받아 문자열을 구성하는 각 문자(letter)를 키로 갖는 객체를 리턴해야 합니다. 각 키의 값은 해당 문자가 문자열에서 등장하는 횟수를 의미하는 number 타입의 값이어야 합니다.
입력
인자 1 : str
- string 타입의 공백이 없는 문자열
출력
- 각 문자를 키로 갖는 객체를 리턴해야 합니다.
주의 사항
- 빈 문자열을 입력받은 경우, 빈 객체를 리턴해야 합니다.
입출력 예시
let output = countAllCharacters('banana');
console.log(output); // --> {b: 1, a: 3, n: 2}
나의 코드
function countAllCharacters(str) {
// 입력: 문자열 => 'banana'
// 출력: 객체 => {b: 1, 1: 3, n: 2} => { 문자열의 각 문자: 나온 횟수}
// 1. 리턴할 객체를 만든다.
// 2. str의 모든 문자열을 순회하는 반복문을 만든다.
// 2-1. if 현재 보고 있는 문자가 아직 키로 생성되지 않았을 때
// 2-2. 그 문자를 키로, 값을 0으로 한 객체를 만든다.
// 3. 문자가 등장할 때마다 1씩 증가시킨다.
let obj = {}
for(i = 0; i < str.length; i++) {
if(!(str[i] in obj)) {
obj[str[i]] = 0
} obj[str[i]] ++
}
return obj
}
mostFrequentCharacter
문제
문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴해야 합니다.
입력
인자 1 : str
- string 타입의 공백이 있는 문장
출력
- string 타입을 리턴해야 합니다.
주의 사항
- 띄어쓰기는 제외합니다.
- 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.
- 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
입출력 예시
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'
나의 코드
function mostFrequentCharacter(str) {
// 입력: 문자열 => 'banana'
// 출력: 객체 => {b: 1, 1: 3, n: 2} => { 문자열의 각 문자: 나온 횟수}
// 1. 리턴할 객체를 만든다.
// 2. str의 모든 문자열을 순회하는 반복문을 만든다.
// 2-1. if 현재 보고 있는 문자가 아직 키로 생성되지 않았을 때
// 2-2. 그 문자를 키로, 값을 0으로 한 객체를 만든다.
// 3. 문자가 등장할 때마다 1씩 증가시킨다.
// 반복문 돌리다가 공백이 나오면 건너뛴다.
// break 공백이 나오면 반복문 종료
// continue 이번 횟수만 건너뛴다.
// mostCount 보다 obj[str[i]]가 크면 대체
// obj[str[0]] b: 1 이므로 mostCount = 1
// obj[str[1]] a: 3 이므로 mostCount = 3
// obj[str[2]] n: 2 이므로 mostCount = 3
let obj = {}
let mostCount = 0
let mostChar = ''
for(i = 0; i < str.length; i++) {
if(str[i] === ' ') {
continue
}
if(!(str[i] in obj)) {
obj[str[i]] = 0
} obj[str[i]] ++
if(mostCount < obj[str[i]]) {
mostCount = obj[str[i]]
mostChar = str[i]
}
}
return mostChar
}
'부트캠프 > TIL' 카테고리의 다른 글
코드스테이츠 프론트엔드 부트캠프 Day 14 - Javascript Koans (0) | 2023.01.03 |
---|---|
코드스테이츠 프론트엔드 부트캠프 Day 13 - 원시 자료형과 참조 자료형, 스코프 (0) | 2023.01.02 |
코드스테이츠 프론트엔드 부트캠프 Day 11 - 배열 연습문제 (0) | 2022.12.29 |
코드스테이츠 프론트엔드 부트캠프 Day 10 #3 npm (0) | 2022.12.28 |
코드스테이츠 프론트엔드 부트캠프 day 10 #1 npm과 package.json (0) | 2022.12.28 |