Photoshop JSX - используя метод разделения на массиве, почему один не работает, а другой работает? - PullRequest
0 голосов
/ 27 января 2011

У меня есть этот код, который генерирует массив информации о том, где руководящие принципы установлены в любом документе 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 голосов
/ 27 января 2011

Второй бит кода, я думаю, некорректен. Он имеет значения только для c [0] и c [1]. Я думаю, что это возможно, потому что я не определил его как массив, и я постоянно переопределяю его в цикле for. Я не уверен, почему существуют разные значения для 0 (Direction.VERTICAL) и 1 (47 пикселей).

Итак, вот мое исправление к первой проблеме, о которой я писал. Мне просто нужно было добавить метод .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 заполняется ожидаемыми результатами разбиения.

Я предполагаю, что split является привередливым и может выполняться только на строке, а не на элементе массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...