0

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([Error: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ループでsplitを使用して、一見同じことを行っているにもかかわらず、機能します。

4

1 に答える 1

2

コードの2番目のビットには欠陥があると思います。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に期待される分割結果が入力されます。

分割は厄介で、配列要素ではなく文字列でのみ実行できると思います。

于 2011-01-26T23:00:28.573 に答える