如何從JavaScript對像中刪除屬性

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

從對像上刪除屬性的語義正確方法是使用delete關鍵詞。

給定對象

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

您可以使用以下命令從此對像中刪除屬性

delete car.brand

Delete a property from an object in JavaScript

它的工作方式還表示為:

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

將屬性設置為undefined

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

由於其性質,delete是一個慢很多而不是簡單地重新分配undefined,速度降低了50倍以上。

但是,請記住,該屬性不會從對像中刪除。它的值被擦除了,但是如果您迭代該對象,它仍然存在:

Iterate over the object

使用delete仍然非常快,只有在您有充分理由這樣做時,才應研究此類性能問題,否則始終首選具有更清晰的語義和功能。

刪除屬性而不更改對象

如果需要考慮可變性,則可以通過複製舊屬性中的所有屬性來創建一個全新的對象,但要刪除的屬性除外:

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()

Create a new object without mutating the original

免費下載我的JavaScript初學者手冊


更多js教程: