Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中替换字符串值解决方案说明_Javascript - Fatal编程技术网

在Javascript中替换字符串值解决方案说明

在Javascript中替换字符串值解决方案说明,javascript,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){
  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;
}
功能DNAStrand(dna){
//你的代码在这里
var dnaArray=dna.slice(“”);
var恭维=[];//将所有值推送到此处
对于(i=0;i
  • 正则表达式
    /[ACGT]/g
    dna
    字符串中执行全局(从
    /g
    标志)搜索
    a
    C
    g
    T
  • 对于每个匹配项(单个
    a
    C
    G
    T
    ),它使用回调函数进行替换
  • 回调函数在
    对中查找输入字符(
    A
    C
    G
    T
    ),并返回相应的值

  • 至于为什么它会在整个字符串中循环,而不仅仅是字符串的一部分
    你这么说是什么意思,你能详细解释一下吗?你不清楚什么让你困惑,你是怎么想的“一部分”您的第二个代码段至少应该使用if-else链。如果第一个if的计算结果为true,则没有理由执行其他if。另外,整个for循环可能是一个map()用法。但是,你问了两个不同的问题,这使得问题过于宽泛。选择你想问的问题,一次只问一个。还有javascript函数的api文档。如果你想知道函数是如何工作的,你应该首先找到它们。