2017-10-04 120 views
2

Photoshop的CC 2017使用這個循環來刪除路徑逐個導致一些路徑(總分8)僅刪除:Javascript Photoshop刪除路徑一個一個的bug?

for(i = 0; i < app.activeDocument.pathItems.length; i++) { 
      alert(i) 
      app.activeDocument.pathItems[i].remove(); 
     } 

長度被報告爲8。然而警報(ⅰ)只示出了4次。只有多次運行循環,所有路徑纔會被刪除。我正在逐一刪除它們,因爲我想保留一個具有特定名稱的路徑。有任何想法嗎?

+2

可能的重複[循環數組和刪除項目,沒有打破循環](https://stackoverflow.com/questions/9882284/looping-through-array-and-removing-items-without-breaking-for-循環) – Ivar

+1

基本上,你正在刪除一個項目,這減少'.length'。你也增加'i',所以當你的'i' = 4時,你的數組中只剩下4個項目,所以它就結束了。 – Ivar

+0

謝謝伊瓦爾,這就是解決方案! – CristianC

回答

1

您在循環訪問時正在更改pathItems。當您刪除項目i時,您會跳過位置i處的新項目。 如果做循環向後它不會引起任何問題

for(i = app.activeDocument.pathItems.length -1; i >= 0; i--) { 
    alert(i) 
    app.activeDocument.pathItems[i].remove(); 
} 
+0

是的,這也適用。我還發現使用Ivar的評論我可以循環遍歷數組。我相信使用while循環刪除[0]元素會導致問題,如果我想保留某個元素(使用某個名稱)。 – CristianC

1

您可以在此情況下,使用pathItems.removeAll()

+0

我正在刪除它們,因爲我想保留一個具有特定名稱的路徑。 – CristianC