有多種方法可以從 JavaScript 物件中刪除屬性。找出替代方案和建議的解決方法。
從物件中刪除屬性的語意正確的方式是使用 delete
關鍵字。
給定以下物件
const car = {
color: 'blue',
brand: 'Ford'
}
您可以使用以下方式從物件中刪除屬性
delete car.brand
也可以這樣表達:
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()
)