JS object의 특정 entry를 삭제해야하는 상황이 발생했고 해결을 위한 과정을 기록한다.
다음과 같은 object가 있다고 가정할 때 value가 null인 entry를 삭제해야 될 경우 다음과 같이 해결 할 수 있다.
const obj = {
a: 1,
b: 2,
c: null,
d: null,
e: 3,
f: null,
}
Object.keys(obj).forEach((key) => {
obj[key] === null && delete obj[key];
});
object자체를 변경하기 떄문에 object가 immutable해야 할 경우에는 위와 같이 해결할 수 없다. 물론 해당 object를 복사한 뒤 위의 방식대로 해결하면 되지만 코드가 길어져서 마음에 들지 않는다.
const newObj = Object.fromEntries(
Object.entries(obj).filter((entry) => entry[1] !== null))
);
위와 같이 object를 array로 변환한 뒤 filter로 필터링 한 후 다시 object로 변환하면 원본 object를 변경하지 않고 해결할 수 있다. 뿐만 아니라 array관련 다른 함수들을 활용 할 수 있으므로 유용하게 사용할 수 있을 것 같다.