Bar*_*run 6 javascript javascript-objects angularjs
我有一个像
var person = {'id':null, 'name':'John Doe'}
Run Code Online (Sandbox Code Playgroud)
将对象值插入数据库后,我将从服务器获取另一个对象:
var personInDB = {'id':1234, 'name':'John Doe'}
Run Code Online (Sandbox Code Playgroud)
我曾经angular.merge使用更新的值person与personInDB.
但是,我想person在应用之前清空对象angular.merge,以便我只能获取数据库中的值。我不想为 person 分配新的空对象,因为这会破坏 angular 的数据绑定。
我想清空
person对象...我不想将新的空对象分配给person
我不知道任何类型的内置对象.deleteAllProperties()方法,因此循环遍历属性并分别调用delete每个属性。以下是一种相当整洁的方法来做到这一点:
Object.keys(person).forEach(k => delete person[k])
Run Code Online (Sandbox Code Playgroud)
或者稍长的非 ES6 箭头函数版本支持回到 IE9:
Object.keys(person).forEach(function(k) { delete person[k]})
Run Code Online (Sandbox Code Playgroud)
对于更旧的 IE,只需使用for..in循环(带.hasOwnProperty()检查)。
很明显,您可以将上述任何内容放入一个函数中以便于重用:
function emptyObject(obj) {
Object.keys(obj).forEach(k => delete obj[k])
}
emptyObject(person)
Run Code Online (Sandbox Code Playgroud)
请注意,虽然这回答了您的问题,但我不确定您为什么认为您需要这样做。您在问题中显示的示例前后具有相同的两个属性,因此angular.merge()只需用新值覆盖旧值,而无需先清空对象。(您是否试图允许对象的旧版本可能具有新版本中不再存在的属性的情况(未显示)?)
| 归档时间: |
|
| 查看次数: |
13540 次 |
| 最近记录: |