Photoshop JSX - 在数组上使用拆分方法,为什么一个不起作用而另一个起作用?

时间:2011-01-26 21:48:18

标签: split jsx

我有这段代码,可以生成一系列有关在任何Photoshop文档中设置指南的信息。

var guides = app.activeDocument.guides;// get the current doc's guides

var guideArray = [];

for (var g = 0; g < guides.length; g++){
 guideArray.push( [guides[g].direction, guides[g].coordinate ]);// store the guide properties for later
}

prompt("title", guideArray);

然后提示输出:

Direction.VERTICAL,47 px,Direction.VERTICAL,240 px,Direction.VERTICAL,182 px,Direction.VERTICAL,351 px,Direction.VERTICAL,119 px,Direction.VERTICAL,21 px,Direction.HORIZONTAL,89 px,Direction.HORIZONTAL,199 px,Direction.HORIZONTAL,54 px,Direction.HORIZONTAL,171 px

我想通过添加此代码来分割此数组

var b = [];

for (var i = 0; i < guideArray.length; i++){

 var b = guideArray[i].split(",");

}

给了我这个错误,

exceptionMessage([错误:ReferenceError:guideArray [i] .split不是函数])

为什么?

忽略我正在做的事情(已经以更优雅的方式弄清楚了),我很想知道为什么会失败。

我很好奇,因为我试过这个并且它有效,

var guides = app.activeDocument.guides;// get the current doc's guides

var guideArray = [];

for (var g = 0; g < guides.length; g++){

 guideArray.push( [guides[g].direction, guides[g].coordinate ]);// store the guide properties for later

 }

var guideString = guideArray.toString();

var b = guideString.split("x,");

for (var i = 0; i < b.length; i++){

 var c = b[i].split(",");

 }

alert(c[1]);

这样可行,即使我在for循环中看起来与上面的分割看似相同。

1 个答案:

答案 0 :(得分:0)

我认为第二位代码存在缺陷。它只有c [0]和c [1]的值。我想这可能是因为我没有把它定义为一个数组,而是在我的for循环中不断重新定义它。我不确定为什么0(Direction.VERTICAL)和1(47 px)有不同的值。

所以这是我对第一个问题的解决方法。我只需要在循环中添加方法.toString(),就像这样。

var guides = app.activeDocument.guides;// get the current doc's guides

var guideArray = [];

for (var g = 0; g < guides.length; g++){
 guideArray.push( [guides[g].direction, guides[g].coordinate ]);// store the guide properties for later
}



var b = [];

for (var i = 0; i < guideArray.length; i++){

    b[i] = guideArray[i].toString().split(",");

}

现在,数组b填充了预期的拆分结果。

我猜分裂是挑剔​​的,只能在不是数组元素的字符串上运行。