Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 객체에서 특정 타입의 속성 제거하기

이번 문제에서는 숫자, 불리언, 문자열, 그리고 객체 자체 등 다양한 타입의 속성을 무작위로 포함하고 있는 객체가 하나 주어집니다.

우리가 작성해야 할 함수는 첫 번째 인수로 객체를, 두 번째 인수로 문자열을 받습니다. 두 번째 인수에는 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 속성이 성공적으로 삭제되고, 나머지 속성들은 그대로 유지된 것을 확인할 수 있습니다.