이번 문제에서는 숫자, 불리언, 문자열, 그리고 객체 자체 등 다양한 타입의 속성을 무작위로 포함하고 있는 객체가 하나 주어집니다.
우리가 작성해야 할 함수는 첫 번째 인수로 객체를, 두 번째 인수로 문자열을 받습니다. 두 번째 인수에는 number, string, object, boolean, symbol 등 자바스크립트의 모든 데이터 타입 이름이 올 수 있습니다.
문제의 요구 사항
함수의 핵심 과제는 두 번째 인수로 지정된 타입과 일치하는 모든 속성을 객체에서 삭제하는 것입니다. 만약 두 번째 인수가 전달되지 않았다면, 기본값으로 'number'를 사용해야 합니다.
구현 코드
이를 구현한 전체 코드는 다음과 같습니다.
const obj = {
name: 'Lokesh Rahul',
age: 29,
mother: 'Avantika Rahul',
father: 'Trilok Rahul',
matches: 123,
average: 45.23,
isFit: true,
runs: {
odi: 5674,
test: 3456
}
};
const shedData = (obj, type = 'number') => {
for(const key in obj){
if(typeof obj[key] === type){
delete obj[key];
};
};
};
shedData(obj, 'string');
console.log(obj);코드 동작 원리
이 함수는 for...in 반복문을 사용해 객체의 모든 키를 순회하며, 각 속성 값에 대해 typeof 연산자로 타입을 검사합니다. 검사 결과가 두 번째 인수로 전달된 타입과 일치하면 delete 연산자를 통해 해당 속성을 제거합니다. 매개변수에 기본값 'number'를 설정했기 때문에, 두 번째 인수 없이 호출하면 자동으로 숫자 타입의 속성들이 삭제됩니다.
출력 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
{
age: 29,
matches: 123,
average: 45.23,
isFit: true,
runs: { odi: 5674, test: 3456 }
}출력 결과를 보면 문자열 타입이었던 name, mother, father 속성이 성공적으로 삭제되고, 나머지 속성들은 그대로 유지된 것을 확인할 수 있습니다.