2016-08-31 2 views
0

Работа над функцией переключения случая для применения к лагерю загрузки. 1-недельный опыт работы с javascript, так что легко на меня. Я смог разбить строку и изменить случай каждой буквы. Я могу увеличить индекс символа строки и вернуть массив обратно в строку. Я даже могу получить push, чтобы написать больше одного символа в массив newString, когда у меня были ошибки, и символы проходили через выражения if/else. но я не могу заставить цикл перебирать строку. (Я использовал $, чтобы открыть конец строки, но я уже попытался заменить с myString.length + 1, и это не помогло.)Javascript перестраивает строку из массива, цикл не итерирует

var newString= []; 
var myString =(""); 

function swapCase(str){ 
    i=0; 
    myString = (str+"$").split(""); 
    console.log("_________ "); 

    character = myString[i]; 
    //console.log ("char= "+character); 
    //console.log ("new string a " +newString); 

    while (character!==myString.length+1){ 
    i=i+1; 
    //newString.push(character);  
    if (character == character.toUpperCase()) { 
     character = character.toLowerCase(); 
     newString.push(character); 

     console.log (" new string after if 1= "+newString); 
     console.log ("new index number: "+i) ; 
     return; 
    } 
    else { 
     character = character.toUpperCase(); 
     //nextLetter = character; 
     //newString.push(nextLetter); 
     newString.push(character); 

     console.log (" new string after if2= "+newString); 
     console.log ("new index number: "+i) ; 
     return; 
    } 
    } 
} 
swapCase("My StRIng"); 
newString=newString.join('') 
console.log("final joined string- "+newString); 

Выходы:

new string after if 1= m 
new index number: 1 
final joined string- m 
+0

без каких-либо возвратов я застреваю в цикле смерти, но он по-прежнему только прокручивает исходный символ ссылки –

ответ

0

You повторяются, проверяя, является ли символ = длина строки. Например, если $ == 25 никогда не будет так, что вы хотите

в то время как (я! == myString.length)

0

Восстановление строки из массива символов

let arrayOfCharacters = ["a", "b", "c", "d"] 

    let rebuiltString = "" 
    for (let c of arrayOfCharacters) { 
     rebuiltString = rebuiltString + c 
    } 
    console.log(rebuiltString); 

Распечатывает «abcd»

+0

Разве это как-то отличается от использования 'join'? –

0

newString не объявлен, а push & соединение не будет работать, если это действительно была строка. Push & join будет работать, если это массив.

 Смежные вопросы

  • Нет связанных вопросов^_^