观察:
var groupedLinks = new Array;
for(var i = 0; i < 5; i++) {
linkName = "59notgonnawork" + i;
groupedLinks[linkName] = new Array;
}
我原本希望结果是数组的链接用5个新键填充,值为5个空数组。
extendscript中的实际结果是...... grouplinks ... empty。
如果我将此示例更改为:
var groupedLinks = new Array;
for(var i = 0; i < 5; i++) {
linkName = "notgonnawork" + i;
groupedLinks[linkName] = new Array;
}
它会完美运作。唯一的变化是失踪&#34; 59&#34;在用于数组键的字符串的开头。
请注意,当我在chrome或firefox的控制台中运行它时,这非常有效。这看起来似乎是一种不确定和/或延伸的方式。
有什么想法为什么?我同时解决了这个问题,但我很感兴趣。
答案 0 :(得分:4)
我原本希望结果是数组的链接用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.
}
答案 1 :(得分:0)
为什么不尝试在每次迭代时推送数组中的值。
var groupedLinks = new Array;
for(var i = 0; i < 5; i++) {
linkName = "59notgonnawork" + i;
groupedLinks.push(linkName);
}
答案 2 :(得分:0)
ExtendScript Arrays非常适合每个indeces存储数据。如果您需要键/值对象,为什么不使用...对象?
var groupedLinks = {};
for(var i = 0; i < 5; i++) {
linkName = "59notgonnawork" + i;
groupedLinks[linkName] = "Whatever…";
}
alert( groupedLinks["59notgonnawork0" ] ); //"Whatever…"
&#13;