使用javaScript替换字符串中的字母

问题描述 投票:0回答:2
function dnaStrand(dna){
 const compl = dna;
 dna.includes("A") && compl.replace(/A/g, "T");
 dna.includes("T") && compl.replace(/T/g, "A")
 dna.includes("C") && compl.replace(/C/g, "G")
 dna.includes("G") && compl.replace(/G/g, "C")
 console.log(compl)
 return compl
}

我打算形成互补DNA链,即A与T互补,C与G互补。

输入>>>输出 ATGC >>>> TACG

javascript function replace include
2个回答
1
投票

String.replace
修改原始字符串(为什么?因为
String
不可变)。

您可以尝试重新映射值,例如:

console.log(dnaStrand(`ATGC`));

function dnaStrand(dna){
 return [...dna].map( v => {
  switch(v) {
    case `A`: return `T`;
    case `T`: return `A`;
    case `C`: return `G`;
    default: return `C`
  }
 }).join(``);
}

String.replace
可以这样使用:

const dna = `ATGC`;
console.log(`dnaStrand(dna) => ${dnaStrand(dna)}, dna still => ${dna}`);

function dnaStrand(dna){
 const complements = {A: `T`, T: `A`, C: `G`, G: `C`};
 return dna.replace(/[ACGT]/g, letter => complements[letter]);
}


0
投票

问题是您正在使用替换,并且字符串在 JS 中是不可变的,因此解释器不会修改字符串,而是会转换一个新的修改后的字符串

在您的示例中,您的替换也存在逻辑问题:一旦将“A”替换为“T”,如果您立即将“T”替换为“A”,它将恢复第一个替换。

以下是如何使用地图获得所需结果:

    function dnaStrand(dna) {
      const complements = {
        'A': 'T',
        'T': 'A',
        'C': 'G',
        'G': 'C'
      };
      
      const compl = dna.split('').map(char => complements[char]).join('');
      
      console.log(compl);
      return compl;
    }
    
    console.log(dnaStrand("ATGC"));

© www.soinside.com 2019 - 2024. All rights reserved.