猿问

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

我尝试删除对象的动态属性。问题在于该属性取决于键数组。让我们看一下代码:


let keys = ['23', 'test', '12']; // Example but this is dynamic

let temp = this.array;

keys.forEach(k => {

  temp = temp[k];

});

delete temp;

我想删除this.array ['23'] ['test'] ['12']。但是我遇到一个错误:“在严格模式下无法在标识符上调用删除”。怎么做 ?


青春有我
浏览 200回答 2
2回答

侃侃尔雅

我想删除this.array ['23'] ['test'] ['12']只需编写即可delete this.array['23']['test']['12']。但是,使用语法,delete temp您并没有删除属性,而是试图删除变量。那不会飞。即使在非严格模式下,它也不会更改this.array对象,您只需声明一个变量并取消声明它即可。在循环中,您应该提前一个步骤删除属性,而不是变量:keys.forEach((key, index, arr) => {&nbsp; if (index < arr.length - 1) {&nbsp;&nbsp; &nbsp; temp = temp[key];&nbsp; } else {&nbsp; &nbsp; delete temp[key];&nbsp; }});

慕尼黑的夜晚无繁华

您可能无法删除它,但可以将其设置为null。尝试:temp&nbsp;=&nbsp;null;
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答