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

时间:2019-04-25 16:50:05

标签: javascript object

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

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']。但是我遇到一个错误:“在严格模式下无法在标识符上调用删除”。该怎么做?

2 个答案:

答案 0 :(得分:3)

  

我要删除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];
  }
});

答案 1 :(得分:0)

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

temp = null;