我有一个switch(),需要包含多个条件才能使其成立。
在线社区告诉我,应该将它们分为两种情况,然后进行定义。像这样:

function changeGrep(searchFor){
app.findGrepPreferences.findWhat = searchFor;
var myFound = myDoc.findGrep();
for(i=0; i<myFound.length; i++){
    switch(searchFor){
        case "^201\\d$":
        case myFound[i].parent.fillColor == app.activeDocument.swatches.item(14):
            myFound[i].parent.fillColor = app.activeDocument.swatches.item(3);
            break;

        case "^-?\\+?\\(?((\\d+,)?(\\d+,)?(\\d+)(\\.\\d+)?%?\\)?)$":
        case myFound[i].parent.fillColor == app.activeDocument.swatches.item(14):
            myFound[i].parent.fillColor = app.activeDocument.swatches.item(4);
            break;

        }
    }
}

changeGrep("^-?\\+?\\(?((\\d+,)?(\\d+,)?(\\d+)(\\.\\d+)?%?\\)?)$");
changeGrep("^201\\d$");


首先,为了完整起见,将整个表放置为红色(14)。如果满足两个条件,则应更改颜色。但是,它并不关心第二个case

有关如何在extendscript中执行此操作的任何想法?

最佳答案

您可以尝试将其作为普通的JS解决方案。将true传递给switch语句,然后每种情况都可以包含一个条件。

switch (true) {
  case (<condition> && <condition>):
    // do something
    break;
  case (searchFor === '^201\\d$'):
    // do other thing
    break;
  case ((searchFor === '^201\\d$') && (myFound[i].parent.fillColor == app.activeDocument.swatches.item(14)):
    // code
    break;
}

关于javascript - ExtendScript开关中的多个条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49633075/

10-10 13:00