从并行数组返回字符串



我很抱歉新手的问题,但这让我发疯了。

我有一句话。 对于单词的每个字母,将找到一个数组中的字符位置,然后返回在并行数组中找到的相同位置的字符(基本密码)。 这是我已经拥有的:

*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来发短信我的代码) :-)

我知道这很简单,但我看不出我哪里出错了。 有什么建议吗?谢谢伊西

解决方案是使用 += 而不是 = 在循环中构建newWord。只需在循环之前将其设置为空字符串即可。

此代码还有其他问题。变量 count 永远不会初始化。但是,让我们假设循环应该使用count而不是position,因为它是主计数器。在这种情况下,如果我没记错的话,这个循环只会生成array2 newWord。循环正文的前两行在说话时相互抵消,position将始终等于count,因此来自array2的字母将从头到尾依次使用。

能否提供一个输入和期望输出的示例,以便我们了解您实际想要完成的任务?

构建代码和问题的一个好方法是定义需要实现的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();

相关内容

  • 没有找到相关文章

最新更新