gpt4 book ai didi

javascript - 如何清空一个JS对象?

转载 作者:行者123 更新时间:2023-11-29 16:06:53 32 4
gpt4 key购买 nike

我有一个像这样的对象

var person = {'id':null, 'name':'John Doe'}

将对象值插入数据库后,我将从服务器获取另一个对象:

var personInDB = {'id':1234, 'name':'John Doe'}

我已经使用 angular.mergeperson 的值更新为 personInDB 的值。

但是,我想在应用 angular.merge 之前清空 person 对象,这样我只能获取数据库中的值。我不想将新的空对象分配给 person,因为这会破坏 Angular 数据绑定(bind)。

最佳答案

I want to empty person object...I don't want to assign new empty object to person

我不知道有任何类型的内置对象 .deleteAllProperties() 方法,因此可以循环遍历属性并分别调用每个属性的 delete。以下是一种相当简洁的方法:

Object.keys(person).forEach(k => delete person[k])

或者稍微长一点的非 ES6 箭头函数版本支持回到 IE9:

Object.keys(person).forEach(function(k) { delete person[k]})

对于更老的 IE,只需使用 for..in 循环(使用 .hasOwnProperty() 检查)。

很明显,您可以将上述任何内容放入函数中以便于重用:

function emptyObject(obj) {
Object.keys(obj).forEach(k => delete obj[k])
}

emptyObject(person)

请注意,虽然这回答了您所问的问题,但我不确定您为什么认为您需要这样做。您在问题中显示的示例前后具有相同的两个属性,因此 angular.merge() 只会用新值覆盖旧值,而无需先清空对象。 (您是否正在尝试考虑一种情况(未显示),即您的对象的旧版本可能具有新版本中不再存在的属性?)

关于javascript - 如何清空一个JS对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324186/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com