我不太确定如何用这句话来表达语法。最终,我想删除文档中没有名称Ex1或Ex2或Ex3的所有路径。
这是我到目前为止所拥有的
deletepaths();
function deletepaths() {
if (!documents.length) return;
var doc = activeDocument;
for (var a = doc.pathItems.length - 1; a > -1; a--) {
if (doc.pathItems[a].name == "Ex1") {
return true;
}
if
else(doc.pathItems[a].name == "Ex2") {
return true;
} else doc.pathItems[a].remove();
}
}
这是我之前使用的另一个脚本,但不允许我排除多个"路径"名称
#target Photoshop
main();
function main(){
if(!documents.length) return;
var doc = activeDocument;
for(var a = doc.pathItems.length-1;a>-1;a--){
if(doc.pathItems[a].name != "Ex1") doc.pathItems[a].remove();
}
}

答案 0 :(得分:0)
这应该这样做:
function deletepaths() {
if (!documents.length) return;
var doc = activeDocument;
for (var a = doc.pathItems.length - 1; a > -1; a--) {
if (!doc.pathItems[a].name.match(/^Ex[1-3]$/)) {
doc.pathItems.splice(a,1);
}
}
}
//Testing
var documents = [{}, {}],
activeDocument = {"pathItems": [{name: "Ex1"}, {name: "Ex2"}, {name: "Someothername"}, {name: "Exasd1"}, {name: "asdEx1"}, {name: "Ex2"}, {name: "Ex3"}, {name: "Ex2"}, {name: "Exasd1"}, {name: "Exasd1"}, ]};
deletepaths();
var body = document.getElementsByTagName("body")[0];
activeDocument.pathItems.forEach(function(a,b,c){
body.innerHTML += a.name + "<br>";
});
答案 1 :(得分:0)
有时,以更易读的方式格式化代码可以帮助诊断问题。
这个函数以稍微不同的方式处理问题 - 我们保留一个我们想要保存的名称数组,如果路径的名称不在该数组中,那么我们调用{{ 1}}就可以了。
我还要返回.remove()
(如果绑定到boolean
变量的元素不存在),那么该函数会向您提供有用的内容,而不是返回documents
。
我不熟悉你正在使用的图书馆,但试试这个。我很乐意与您合作以获得解决方案,只需对此答案发表评论。
使用此功能:
undefined
工作示例:
http://codepen.io/bddenhartog/pen/VLReKa
请注意,笔中的代码已经过修改以适应示例。