Adobe Extendscriptを書いていて、選択したものを消したいのに消えない、でもいくつかだけ消える。ということがあり、実は当たり前のことに気づいていなかったので、自分メモ
元のコード
var doc = app.activeDocument;
var sel = doc.selection;
for(var i=0; i < sel.length; i++) {
sel[i].remove();
}
これで全部消えるだろうと思っていましたが、消えませんでした。
正解のコード
var doc = app.activeDocument;
var sel = doc.selection;
while (sel.length > 0) {
sel[0].remove();
}
または
正解のコード(2)
for (var i = sel.length - 1; i >= 0; i--) {
sel[i].remove();
}
sel[n]
をremove()
すると、sel[n+1]
だったものがsel[n]
になるため、i
を0から増加させてループしても全部は消えないということでした。