为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除对象的动态属性?

如何删除对象的动态属性?

青春有我 2021-04-27 21:18:59
我尝试删除对象的动态属性。问题在于该属性取决于键数组。让我们看一下代码:let keys = ['23', 'test', '12']; // Example but this is dynamiclet temp = this.array;keys.forEach(k => {  temp = temp[k];});delete temp;我想删除this.array ['23'] ['test'] ['12']。但是我遇到一个错误:“在严格模式下无法在标识符上调用删除”。怎么做 ?
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我想删除this.array ['23'] ['test'] ['12']


只需编写即可delete this.array['23']['test']['12']。但是,使用语法,delete temp您并没有删除属性,而是试图删除变量。那不会飞。即使在非严格模式下,它也不会更改this.array对象,您只需声明一个变量并取消声明它即可。


在循环中,您应该提前一个步骤删除属性,而不是变量:


keys.forEach((key, index, arr) => {

  if (index < arr.length - 1) { 

    temp = temp[key];

  } else {

    delete temp[key];

  }

});


查看完整回答
反对 回复 2021-05-13
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可能无法删除它,但可以将其设置为null。尝试:

temp = null;


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信