当前位置: 首页 > 知识库问答 >
问题:

有没有更简洁的方法来设置条件语句,以便为变量的任意值集执行?[副本]

沈博达
2023-03-14

有没有更有效/简洁/雄辩的方法来写这个:

else if ((aInd === 3)||(aInd === 7)||(aInd === 9)||(aInd === 19)
     letter = alphabet[aInd + 1].toUpperCase();

是否有任何有效的语法

if (a === (3 || 7 || 13 || 19) {do this}

... 或者,与一组具有| |逻辑的布尔表达式相比,您可以更简洁地对单个变量的值集进行分组?

背景:初级程序员,通过一个基本的密码挑战coderbyte,需要采取一定的行动(大写),如果字母是元音。出于简单的原因(因为它在程序的其他地方使用),我声明了一个数组字母表,其中包含字符串形式的每个字母a-z。cypher还将每个字母1移到右边,因此成为元音的字母的字母索引是3、7、13和19。aInd代表字母表中字母的索引。

完整代码:

function letterChanges(str) {
    var alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
    var words = str.toLowerCase().split(' '), senArray = words.map(function(word) {return word.split('')});
    senArray.forEach(function(word) {
        word = word.filter(function(letter, index, word) {
            if ((Boolean(alphabet.indexOf(letter))) === false) return false;
            else return true;
        });
    });

    senArray[0].map(function(letter) {
        var aInd = alphabet.indexOf(letter);
        switch (aInd) {
            case 25: 
                letter = alphabet[aInd].toUpperCase();
                break;
            case (3 || 7 || 13 || 19):
                letter  = alphabet[aInd + 1].toUpperCase();
                console.log(letter);
                break;
            default:
                letter  = alphabet[aInd + 1];
                break;
        }
        return letter;
    })
    
    return senArray.map(function(word) {
        return word.map(function(letter) {
        var aInd = alphabet.indexOf(letter);
        if (aInd === 25) {letter = alphabet[aInd].toUpperCase();}
        else if ((aInd === 3)||(aInd === 7)||(aInd === 13)||(aInd === 19)) {letter  = alphabet[aInd + 1].toUpperCase();}
        else {letter  = alphabet[aInd + 1];}
        return letter;
    }).join('');
    }).join(' ');
}

letterChanges("Input string goes here.");

共有1个答案

公良高刚
2023-03-14

将值作为数组传递,并检查indexOf

就你而言,

if ([3, 7, 13, 19].indexOf(aInd) > -1) {
  letter  = alphabet[aInd + 1].toUpperCase();
}
 类似资料:
  • 我正在开发一个java程序,它接受输入的分数,给出输入的总数和平均值,但是我很难计算出如何获得当前输入的最高分数“我使用了大量嵌套的else-if语句,但必须有一种简单的方法来实现这一点,而不是键入100个else-if语句这是我的代码。我在else-if语句开始的地方添加了一条注释,以确定最高级别

  • 我做这个迭代是为了对DataFrame的每个值执行不同的函数: 作为xxx一个2列数据帧

  • 问题内容: 这实际上可能是一个愚蠢的问题,但我想知道是否有可能使用if语句执行所有条件。我解释: 当所有三个方法都返回true时执行。关键是,当一个方法返回false时,其余方法将不会执行。这通常对性能而言是一件好事,但是如果我真的需要独立于所有方法返回的值来执行所有方法,然后对表达式求值并进入if与否,该怎么办?同样适用于OR或其他 有没有一种方法可以告诉Java采取这种方式?我目前的解决方法是

  • 我试图通过对println语句使用循环来缩短代码。不打印名称和高度的单独语句,是否有其他方法使用相同的格式进行此操作?:

  • 在Python 2中,可以将任意可调用函数转换为类的方法。重要的是,如果可调用函数是用C实现的CPython内置函数,您可以使用它来创建用户定义的类的方法,这些类本身就是C层,在调用时不调用字节代码。 如果您依赖GIL来提供“无锁”同步,这有时会很有用;由于GIL只能在操作代码之间交换,如果您代码特定部分中的所有步骤都可以推送到C,您可以使其以原子方式运行。 在Python 2中,你可以做这样的事

  • 问题内容: 我正在尝试弄清楚如何解析一些XML(对于Android应用程序),在Java中很难做到这一点似乎很荒谬。似乎需要创建一个具有各种回调(startElement,endElement等)的XML处理程序,然后您必须注意将所有这些数据更改为对象。类似于本教程。 我真正需要的只是将XML文档更改为多维数组,甚至更好的是拥有某种Hpricot处理器。有没有办法做到这一点,还是真的必须在上面的示