Gru*_*rig 7 javascript node.js
我想删除一个对象的某些成员(为了参数,那些键以'_'开头).这是一种优雅的方式吗?天真的方式是:
for (var i in obj)
if (i[0] === '_')
delete obj[i];
Run Code Online (Sandbox Code Playgroud)
但是在迭代期间修改了底层对象.在Node中至少我想我可以
Object.keys(obj).forEach(function (i) { if (i[0] === '_') delete obj[i]; });
Run Code Online (Sandbox Code Playgroud)
每次用尴尬的嵌套循环删除某些内容时重启迭代.
还有更好的解决方案吗?
编辑:刚刚在测试中,至少在node.js中,天真的解决方案实际上似乎有效.当然(有必要)安全地实施...... in当然是可能的.谁知道?
OnT*_*Fly 18
你不必担心它.ECMAScript语言规范 §12.6.4 的摘录明确指出(由我强调):
枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)未指定. 枚举期间可以删除要枚举的对象的属性.如果删除枚举期间尚未访问的属性,则不会访问该属性.如果在枚举期间将新属性添加到要枚举的对象,则无法保证在活动枚举中访问新添加的属性.在任何枚举中不得多次访问属性名称.
| 归档时间: |
|
| 查看次数: |
11110 次 |
| 最近记录: |