不确定为何以下代码无效。它应该采用一个字符串并将G转换为C,将A转换为T,反之亦然。但是,它收集输入字符串但不提供任何输出,即警报只是说"这是你的反向补充DNA"
var dnaSequence = prompt("Enter your DNA sequence here", "");
var newSequence = reverseComplement(dnaSequence);
alert("here is your reverse complemented DNA: " + newSequence);
function reverseComplement(dnaString) {
var reverseC = [];
var dnaArr = dnaString.split('');
for (var i = 0; i < dnaArr.length; i++) {
switch (dnaArr[i]) {
case 'A':
reverseC.push('T');
break;
case 'T':
reverseC.push('A');
break;
case 'C':
reverseC.push('G');
break;
case 'G':
reverseC.push('C');
break;
}
}
// Reverse and rejoin the the string
return reverseC.reverse().join('');
}
答案 0 :(得分:1)
它应该包含一个字符串并将G转换为C,将A转换为T,反之亦然。
然后你不需要反向(),因为你正在按顺序推进。
此外,请确保在提示中输入大写字母。 否则,你可以强制大写。
这是包含两个修复程序的代码:
function reverseComplement(dnaString) {
var reverseC = [];
var dnaArr = dnaString.toUpperCase().split('');
for (var i = 0; i < dnaArr.length; i++) {
switch (dnaArr[i]) {
case 'A':
reverseC.push('T');
break;
case 'T':
reverseC.push('A');
break;
case 'C':
reverseC.push('G');
break;
case 'G':
reverseC.push('C');
break;
}
}
// Reverse and rejoin the the string
return reverseC.join('');
}
var dnaSequence = prompt("Enter your DNA sequence here", "");
var newSequence = reverseComplement(dnaSequence);
alert("here is your reverse complemented DNA: " + newSequence);
答案 1 :(得分:0)
这里需要的主要教训是如何测试和调试JavaScript代码。
首先,熟悉浏览器中的JavaScript调试器。而不是想知道为什么你的代码不起作用,你可以直接看到它在做什么。每个现代浏览器都有内置的JavaScript调试工具;例如,这里是introduction to the Chrome DevTools。
其次,当您测试这样的功能时,请不要使用prompt()
或alert()
。相反,提供硬编码输入字符串并使用console.log()
在JavaScript调试控制台中显示输出。这样,您可以重复运行相同的测试用例。在让一个测试用例工作后,您可以添加其他测试用例。
如果你想获得一些幻想,有几个JavaScript测试框架,但首先,只需使用硬编码输入和console.log()
输出以及JavaScript调试器中的检查就可以了。
为了在第一次编写函数时轻松调试函数,请在开头添加debugger;
语句。然后它将在调试器中停止,您可以单步执行代码,以查看函数的哪些部分实际执行,以及在每一步中所有变量值是什么。
例如(因为听起来你错误地使用小写输入进行测试),你可能会这样做:
var dnaSequence = 'actg';
var newSequence = reverseComplement(dnaSequence);
console.log(newSequence);
function reverseComplement(dnaString) {
debugger;
var reverseC = [];
var dnaArr = dnaString.split('');
for (var i = 0; i < dnaArr.length; i++) {
switch (dnaArr[i]) {
case 'A':
reverseC.push('T');
break;
case 'T':
reverseC.push('A');
break;
case 'C':
reverseC.push('G');
break;
case 'G':
reverseC.push('C');
break;
}
}
// Reverse and rejoin the the string
return reverseC.reverse().join('');
}
现在,如果您打开DevTools,它将在函数第一行的调试器中停止。您可以单步执行该功能以查看它实际进入哪个case
语句,您将看到它不会转到其中任何一个语句。您还可以查看dnaArr[i]
的值,看看它是否与任何case
值匹配。