将值传递给javascript中的函数
不确定为什么下面的代码不起作用。它应该采用一个字符串并将G转换为C,将A转换为T,反之亦然。然而,它收集的输入字符串,但即警告只是说:“这是你的反向互补DNA”将值传递给javascript中的函数
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('');
}
应该采取一个串并转换A G为C和不提供任何输出A到T,反之亦然。
然后,您不需要reverse(),因为您按顺序推送。
另外,请确保您在提示中输入了大写字母。 否则,你可以强制大写。
这是两个补丁代码:
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);
你所需要的是如何测试和调试JavaScript代码的主要教训。
首先,熟悉浏览器中的JavaScript调试器。与其想知道为什么你的代码不起作用,你可以直接看到它在做什么。每个现代浏览器都有内置的JavaScript调试工具;例如这里是一个introduction to the Chrome DevTools。
其次,当您正在测试这样的功能时,请不要使用prompt()
或alert()
。相反,请提供硬编码的输入字符串,并使用console.log()
在JavaScript调试控制台中显示输出。这样你可以重复运行相同的测试用例。在您获得一个测试用例后,您可以添加其他测试用例。
有几个JavaScript的测试框架,如果你想获得幻想,但随着开始,只需使用JavaScript调试器的硬编码的输入和输出console.log()
加上检查罚款。
为了便于在第一次写入时调试函数,请在开始处添加一条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
值中的任何值匹配。
这非常有帮助,谢谢 – neemie
由于提示中的数据为空 –
您发布的代码正常工作。 – Pointy
您的代码有效。只要确保输入处于大写状态,并注意除A,T,C和G之外的字母不会被添加到reverseC。也许你应该改变它? – yts