【发布时间】:2012-08-10 01:58:01
【问题描述】:
我正在尝试操作具有 30,000 个页面项目的 Illustrator 文档中的某些页面项目。我试图避免遍历每一个。与此 AppleScript 等效的 Javascript 是什么?
set xxx to every page item whose note = "John"
第一页项目的注释值示例如下:
set xxx to (do javascript "app.activeDocument.pathItems[0].note")
最终,我只需要数组的计数(长度)。
在快速浏览了一个教程后,我将其拼凑成 Javascript 示例。这是获得结果的唯一方法吗?
docRef = app.activeDocument;
var pathLength = docRef.pathItems.length;
var hitList = []
for (i = 0; i<pathLength; i++)
{
if (docRef.pathItems[i].note= "John")
{
hitList.push(i)
}
}
alert(hitList.length)
【问题讨论】:
-
你想避免什么样的循环?显然,某处必须有一个循环!
-
如您所知,我不熟悉 Javascript。我在我的问题中发布的 AppleScript 命令完成了任务,而无需(显式)循环遍历每个项目来测试属性的值。是否有 javascript 等效项用于在不进入循环的情况下搜索对象数组以获取特定属性?
-
不,JS 没有像 AppleScript 那样的隐式循环。您是否有任何理由试图避免
for循环?只有 3 个字符。 -
哈。我担心单独检查 30,000 个项目的属性需要花费的时间。
-
没有办法避免检查所有这些属性。 AppleScript 循环通过它们或 JavaScript 循环。
标签: javascript adobe-illustrator