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

Javascript 如何删除对象的动态属性?,javascript,object,Javascript,Object,我尝试删除对象的动态属性。问题是该属性取决于一个键数组。让我们看看代码: let keys = ['23', 'test', '12']; // Example but this is dynamic let temp = this.array; keys.forEach(k => { temp = temp[k]; }); delete temp; 我想删除此.array['23']['test']['12']。但我得到了一个错误:“不能在严格模式下对标识符调用delete”。如何

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

let keys = ['23', 'test', '12']; // Example but this is dynamic
let temp = this.array;
keys.forEach(k => {
  temp = temp[k];
});
delete temp;

我想删除此.array['23']['test']['12']。但我得到了一个错误:“不能在严格模式下对标识符调用delete”。如何操作?

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

temp = null;
我想删除此.array['23']['test']['12']

写下这句话,
删除这个。数组['23']['test']['12']
,就可以了。但是使用语法,
delete temp
,您并不是在删除属性,而是在尝试删除变量。那不会飞的。即使在非严格模式下,它也不会改变
this.array
对象,您只需声明一个变量并取消声明即可

使用循环时,应提前一步停止以删除属性,而不是变量:

keys.forEach((key, index, arr) => {
  if (index < arr.length - 1) { 
    temp = temp[key];
  } else {
    delete temp[key];
  }
});
keys.forEach((key,index,arr)=>{
如果(索引
效果很好!谢谢