Javascript Photoshop一一删除路径的bug?
Posted
技术标签:
【中文标题】Javascript Photoshop一一删除路径的bug?【英文标题】:Javascript Photoshop delete paths one by one bug? 【发布时间】:2018-03-15 12:09:12 【问题描述】:Photoshop CC 2017。使用此循环一一删除路径会导致仅删除某些路径(共 8 条):
for(i = 0; i < app.activeDocument.pathItems.length; i++)
alert(i)
app.activeDocument.pathItems[i].remove();
长度被报告为 8。但是 alert(i) 只显示 4 次。只有在多次运行循环时才会删除所有路径。我将它们一一删除,因为我想保留具有特定名称的路径。有什么想法吗?
【问题讨论】:
Looping through array and removing items, without breaking for loop的可能重复 基本上,您正在删除一个项目,这会减少.length
。您还增加了 i
,所以当您的 i
= 4 时,您的数组中只剩下 4 个项目,所以它完成了。
谢谢Ivar,这就是解决方案!
【参考方案1】:
当你循环遍历它时,你正在改变pathItems
。当您删除项目 i
时,将在位置 i
处有一个您跳过的新项目。
如果你向后循环,它不会造成任何问题
for(i = app.activeDocument.pathItems.length -1; i >= 0; i--)
alert(i)
app.activeDocument.pathItems[i].remove();
【讨论】:
是的,这也有效。我还发现使用 Ivar 的评论可以向后循环遍历数组。如果我想保留某个元素(具有某个名称),我相信使用 while 循环删除 [0] 元素会导致问题。【参考方案2】:在这种情况下,您可以使用pathItems.removeAll()
。
【讨论】:
我正在一个一个地删除它们,因为我想保留一个具有特定名称的路径。以上是关于Javascript Photoshop一一删除路径的bug?的主要内容,如果未能解决你的问题,请参考以下文章
使用扩展脚本(javascript)如何从 Photoshop 颜色表中获取颜色值