用JavaScript替换字符串值解决方案说明

时间:2018-12-28 23:08:21

标签: javascript

任何人都可以解释这段代码的工作原理吗?特别是回调函数,令我感到困惑的是为什么它会遍历整个输入而不是整个输入的一部分

function DNAStrand(dna){
  return dna.replace(/[ACGT]/g, function(l){ return pairs[l] });
}

var pairs = {
  A:'T',
  T:'A',
  G:'C',
  C:'G'
};

此外,这是我的任务解决方案(在代码大战中),我的代码在4毫秒内编译,我认为还不错!

function DNAStrand(dna){
  //your code here
  var dnaArray = dna.slice("");
  var compliment = [];  //push all values here
  for(i=0; i<dnaArray.length; i++){    //loops through whole array
    if(dnaArray[i] === 'T'){compliment.push('A')}
    if(dnaArray[i] === 'A'){compliment.push('T')}
    if(dnaArray[i] === 'G'){compliment.push('C')}
    if(dnaArray[i] === 'C'){compliment.push('G')}
  }
  var result = compliment.join("");
  return result;
}

除了比第一个解决方案少优雅之外,如果这两个解决方案都产生相同的结果,那么与其他解决方案相比有什么问题吗?只是试图了解有关最佳做法的一般规则!

1 个答案:

答案 0 :(得分:0)

  1. 正则表达式/[ACGT]/g/gACG中的TdnaA执行全局(从C标志) G字符串
  2. 对于每个匹配项(单个TACG),都会使用回调函数进行替换
  3. 回调函数在T中查找输入字符(pairs,{{1}},{{1}}或{{1}})并返回相应的值