有多種方法可以從 JavaScript 物件中刪除屬性。找出替代方案和建議的解決方法。

從物件中刪除屬性的語意正確的方式是使用 delete 關鍵字。

給定以下物件

const car = {
  color: 'blue',
  brand: 'Ford'
}

您可以使用以下方式從物件中刪除屬性

delete car.brand

在 JavaScript 中從物件中刪除屬性

也可以這樣表達:

delete car['brand']
delete car.brand
delete newCar['brand']

將屬性設置為 undefined

如果您需要以非常優化的方式執行此操作,例如在循環中對大量物件進行操作時,那麼另一個選擇是將屬性設置為 undefined

由於 delete 的性質,它的性能比簡單地將屬性重新賦值為 undefined 要慢很多,超過 50 倍。

但是,請記住,該屬性並未從物件中刪除。它的值被清除,但如果您遍歷物件,它仍然存在:

遍歷該物件

使用 delete 仍然非常快速,只有在有非常好的理由時才應該考慮這種性能問題,否則最好具有更清晰的語意和功能。

在不改變物件的情況下刪除屬性

如果 mutability 是一個關注點,您可以通過從舊物件複製所有屬性(除去要移除的屬性)來創建一個完全新的物件:

const car = {
  color: 'blue',
  brand: 'Ford'
}
const prop = 'color'

const newCar = Object.keys(car).reduce((object, key) => {
  if (key !== prop) {
    object[key] = car[key]
  }
  return object
}, {})

(參見 Object.keys()

在不改變原始物件的情況下創建一個新的物件