2017-10-04 118 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