我很抱歉这个新手问题,但这让我很生气。
我有一句话。对于单词的每个字母,找到一个数组中的字符位置,然后返回在并行数组(基本密码)中找到的相同位置处的字符。这就是我已经拥有的:
*array 1 is the array to search through*
*array 2 is the array to match the index positions*
var character
var position
var newWord
for(var position=0; position < array1.length; position = position +1)
{
character = array1.charAt(count); *finds each characters positions*
position= array1.indexOf(character); *index position of each character from the 1st array*
newWord = array2[position]; *returns matching characters from 2nd array*
}
document.write(othertext + newWord); *returns new string*
我遇到的问题是,此功能只会写出新单词的最后一个字母。我确实想在document.write中添加更多文本,但是如果我放在for循环中,它会写出新单词,但也会写出每个单词之间的其他文本。我真正想做的是返回othertext + newWord而不是document.write,以便我以后可以使用它。 (只使用doc.write来发送我的代码文本): - )
我知道它的内容非常简单,但我无法知道我哪里出错了。有什么建议? 谢谢 ISSY
答案 0 :(得分:1)
解决方案是使用newWord
代替+=
在循环中构建=
。只需在循环之前将其设置为空字符串。
此代码还有其他问题。变量count
永远不会被初始化。但是我们假设循环应该使用count
而不是position
作为它的主要计数器。在这种情况下,如果我没有弄错的话,这个循环只会生成array2
newWord
。在演讲中,前两行循环的身体相互抵消,position
将始终等于count
,因此来自array2
的字母将从开始到结束顺序使用。
您能提供一个输入和所需输出的示例,以便我们了解您实际想要完成的内容吗?
答案 1 :(得分:0)
构建代码的好方法和问题是您定义了需要实现的function
。在你的情况下,这可能看起来像:
function transcode(sourceAlphabet, destinationAlphabet, s) {
var newWord = "";
// TODO: write some code
return newWord;
}
这样,您可以清楚地说明您想要的内容以及涉及的参数。稍后编写自动测试也很容易,例如:
function testTranscode(sourceAlphabet, destinationAlphabet, s, expected) {
var actual = transcode(sourceAlphabet, destinationAlphabet, s);
if (actual !== expected) {
document.writeln('<p class="error">FAIL: expected "' + expected + '", got "' + actual + '".</p>');
} else {
document.writeln('<p class="ok">OK: "' + actual + '".');
}
}
function test() {
testTranscode('abcdefgh', 'defghabc', 'ace', 'dfh');
}
test();