在数组键(Indesign 2017,extendscript)中使用开头带有数字的字符串时,它们不会添加到数组中



观察:

    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…"

最新更新