2016-07-07 47 views
1

是不是有办法emptyAll我的控件数组,我试过用做它的循环控制:空Array

console.log("primitif value : " + this.parameters.length); 
     for (var index = 0; index < this.parameters.length; index++) { 
      this.parameters.removeAt(this.parameters.length- index); 
      console.log("seconde value :" + this.parameters.length); 
     } 

它删除刚刚过去的价值,我想完全删除所有元素,我不能这样做:

this.parameters = []; 

有没有办法做到这一点?

+0

试试'this.parameters.length = 0;'。您不能删除使用该数组长度作为其循环出口控制的for循环中的项目。 – ManoDestra

+0

我也试过了,它不起作用,它仍然包含控件..... – Anna

+0

将this.parameters设置为[]或将其长度设置为零后,对其执行一个console.log。它在控制台中为this.parameters显示了什么?其他的东西必须重置你的数组。 – ManoDestra

回答

2

创建的参数的克隆阵列。您想从阵列中删除的地方,从克隆的地方删除。然后调用克隆的长度。 for循环之后,将参数设置为克隆。

console.log("primitif value : " + this.parameters.length); 
    var clone = this.parameters; 
    for (var index = 0; index < this.parameters.length; index++) { 
     clone.removeAt(clone.length- index); 
     console.log("seconde value :" + clone.length); 
    } 
    this.parameters = clone; 

采用这种解决方案意味着,如果你需要在参数数组或者操纵任何一个异步方法去尝试使用这些指标之一,他们仍然可用,直到之后的for循环。

+0

thx男人,感谢您的帮助 – Anna

3

尝试这种情况:

for (var index = this.parameters.length - 1; index >= 0; index--) { 
     this.parameters.removeAt(index); 
} 
+2

不应该是'index> = 0',为了移除第一个元素?和'index = this.parameters.length - 1'? – ManoDestra

+0

是的,我的不好。但这应该对她有帮助。 – Verri

+1

or this solution: 'for(var index = array.length; index> -1; index--){ \t \t array.splice(index,1); \t \t}' – Verri