Object Delete

2022-06-11
const person = {
  firstName: "Namsun",
  lastName: "Kim",
  age: 1,
};

다음과 같은 object가 있다고 하자.
age라는 key를 삭제하고 싶으면 어떻게 해야할까?

delete

  • 객체의 속성을 제거
delete person.age;

delete를 사용하면 안되는 이유

  • object의 불변성(Immutability)을 해치게 된다.
const person = {
  firstName: "Namsun",
  lastName: "Kim",
  age: 1,
};
 
console.log("person 삭제 전 : ", person);
 
delete person.age;
console.log("person 삭제 후 : ", person);

  • 존재하지 않는 속성을 삭제하려고 하면 delete는 어떠한 작업도 없이 true를 반환한다.
const person = {
  firstName: "Namsun",
  lastName: "Kim",
  age: 1,
};
 
delete person.age; //true반환

불변성을 지키면서 object key를 삭제하는 방법

spread operator

const person = {
  firstName: "Namsun",
  lastName: "Kim",
  age: 1,
};
 
console.log("person 삭제 전 : ", person);
 
const { age, ...otherKey } = person;
 
console.log("person 삭제 후 : ", person);
console.log("person 삭제 후 otherKey: ", otherKey);

Object.fromEntries + Object.entries

Object.fromEntries(
  Object.entries(person).filter(([key]) => !key.includes("age")),
);

Object.entries

  • [key, value] 쌍의 배열을 반환
Object.entries(person);
[
  ["firstName", "Kim"],
  ["lastName", "Namsun"],
  ["age", 1],
]

Object.fromEntries

  • 키값 쌍의 목록을 객체로 바꾼다.
Object.fromEntries([
  ["firstName", "Kim"],
  ["lastName", "Namsun"],
  ["age", 1],
]);
{ firstName: 'Kim', lastName: 'Namsun', age: 1 }
Object.fromEntries(
  Object.entries(person).filter(([key]) => !key.includes("age")),
);