Возвращение строки из параллельного массива - PullRequest
0 голосов
/ 14 мая 2011

Прошу прощения за вопрос новичка, но это сводит меня с ума.

У меня есть слово.Для каждой буквы слова определяется позиция символов в одном массиве, а затем возвращается символ в той же позиции, что и в параллельном массиве (базовый шифр).Вот что у меня уже есть:

*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 для написания моего кода): -)

Я знаю, что это очень просто, но я не вижу, где я ошибаюсь.Любой совет?Спасибо Исси

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Решение состоит в том, чтобы построить newWord в цикле, используя += вместо =. Просто установите пустую строку перед циклом.

Есть другие проблемы с этим кодом. Переменная count никогда не инициализируется. Но давайте предположим, что циклы должны использовать count вместо position в качестве основного счетчика. В этом случае, если я не ошибаюсь, этот цикл просто сгенерирует array2 как newWord. Первые две строки тела цикла взаимно заменяют друг друга, и position всегда будет равен count, поэтому буквы от array2 будут использоваться последовательно от начала до конца.

Не могли бы вы привести один пример ввода и желаемого результата, чтобы мы понимали, чего вы на самом деле хотите достичь?

0 голосов
/ 14 мая 2011

Хороший способ структурирования вашего кода и вашего вопроса заключается в том, что вы определяете 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();
...