任何人都可以解释这段代码的工作原理吗?特别是回调函数,令我感到困惑的是为什么它会遍历整个输入而不是整个输入的一部分
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;
}
除了比第一个解决方案少优雅之外,如果这两个解决方案都产生相同的结果,那么与其他解决方案相比有什么问题吗?只是试图了解有关最佳做法的一般规则!
答案 0 :(得分:0)
/[ACGT]/g
对/g
,A
,C
或G
中的T
,dna
,A
执行全局(从C
标志) G
字符串T
,A
,C
或G
),都会使用回调函数进行替换T
中查找输入字符(pairs
,{{1}},{{1}}或{{1}})并返回相应的值