2016-07-07 48 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