观察:
var groupedLinks = new Array;
for(var i = 0; i < 5; i++) {
linkName = "59notgonnawork" + i;
groupedLinks[linkName] = new Array;
}
我本来希望结果是数组分组链接被填充 5 个新键,值将是 5 个空数组。
扩展脚本中的实际结果将是...组链接...空。
如果我将此示例更改为:
var groupedLinks = new Array;
for(var i = 0; i < 5; i++) {
linkName = "notgonnawork" + i;
groupedLinks[linkName] = new Array;
}
它会完美地工作。唯一的更改是用于数组键的字符串开头缺少"59"。
请注意,当我在 chrome 或 firefox 的控制台中运行它时,这非常有效。它似乎是在胡闹和/或扩展脚本。
有什么想法吗?与此同时,我已经解决了这个问题,但我很感兴趣。
我本来希望结果是数组分组链接被填充 5 个新键,值将是 5 个空数组。
这正是它的作用,但是您查看数据的方式可能会隐藏它,因为您没有使用正确的数据结构。此外,如果不使用 []
,属性访问将不起作用,因为标识符可能不以数字开头,因此您需要:
groupedLinks["59notgonnawork0"]
您正在执行的操作不适用于数组,数组需要连续的数字索引(尽管从技术上讲,它们也可以分配其他属性(。您应该使用的结构类型是普通对象。
var groupedLinks = {};
for(var i = 0; i < 5; i++) {
const linkName = "59notgonnawork" + i;
groupedLinks[linkName] = new Array; // Array? plain Object? Depends on its use.
}
为什么不尝试在每次迭代时推送数组中的值。
var groupedLinks = new Array;
for(var i = 0; i < 5; i++) {
linkName = "59notgonnawork" + i;
groupedLinks.push(linkName);
}
ExtendScript 数组非常适合存储每个 indeces 的数据。如果您需要键/值对象,为什么不使用...对象?
var groupedLinks = {};
for(var i = 0; i < 5; i++) {
linkName = "59notgonnawork" + i;
groupedLinks[linkName] = "Whatever…";
}
alert( groupedLinks["59notgonnawork0" ] ); //"Whatever…"