javascript - 使用多个三元运算符替换字符串的多个字符

标签 javascript string conditional-operator

我正在尝试解决 JavaScript 中的一个简单问题。我必须获取一串字符并进行以下替换:

G -> C
C -> G
T -> A
A -> U

例如,如果输入是 ATCG,则输出将为 UAGC

最初我想将字符串转换为数组,然后对其使用map()。但是,当工作可以在一次迭代中完成时,为什么要迭代字符串两次呢?

因此我寻找其他方法,例如 RegExp,但似乎进行多次替换的唯一方法是链接多个 replace() ,这确实会更加低效。

所以我想使用 for...of 并编写了以下代码:

let s = 'ATGC*';

let r = '';

for(const x of s) r += x === 'C' ? 'G' : 'G' ? 'C' : 'T' ? 'A' : 'A' ? 'U' : '-NaN-';

console.log(r);

它似乎将 C 转换为 G,并将其他所有内容转换为 C

我认为它应该像这样工作:

x ===    // if the current character is equal to
'C' ?    // `C` 
'G' :    // r += `G`
'G' ?    // else if it is equal to `G`
'C' :    // r += `C`
'T' ?    // else if it is equal to `T`
'A' :    // r += `A`
'A' ?    // else if it is equal to `A`
'U' :    // r += `U`
'-NaN-'; // else it is not a nucleotide

有人知道到底发生了什么吗?

最佳答案

如果您确实喜欢采用三元组,则可以在多个条件下采用此方法。

r += x === 'G'
    ? 'C'
    : x === 'C'
        ? 'G'
        : x === 'T'
            ? 'A'
            : 'U'

更好的方法是使用一个对象来替换值。

nucleobases = { G: 'C', C: 'G', T: 'A', A: 'U' }

稍后替换

r += nucleobases[x];

关于javascript - 使用多个三元运算符替换字符串的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66662073/

相关文章:

javascript - TensorFlow JS 异常 - 无法开始训练,因为正在进行另一个 ft() 调用

java - 在开发期间向 Java EE 验证 AngularJS ("grunt serve"< >"JBoss")

c# - 使用正则表达式识别文本开头和结尾的选定文本#

android - NullPointerException 获取 StringArray 到 String[]

Java 三元(内联)运算符 : accesing comparation variables

JavaScript 全局数组未定义,尽管它在警报中显示

javascript - 仪表板跨域 AJAX 与 jquery

string - 如何在 Scala 字符串中找到 Id 的出现

C++三元运算符,有什么区别?

typescript 从三元条件推断字符串文字