2017-01-03 12 views
0

Мне нужно немного помочь с моим кодом в Javascript, так как я новичок в этом. Мне нужно сделать функцию, которая читает ввод строки и преобразует нечетные индексированные символы в строку в upperCase, а четные - в lowerCase.Преобразование символов Odd и Even-indexed в строку в верхний регистр/lowecase в Javascript?

function alternativeCase(string){ 
    for(var i = 0; i < string.length; i++){ 
     if (i % 2 != 0) { 
      string[i].toUpperCase(); 
     } 
     else { 
      string[i].toLowerCase(); 
     } 
    } 
    return string; 
} 

Я знаю, что делаю что-то ужасно неправильно, но я не могу понять, как это исправить. Помоги пожалуйста?

+1

Возможная дубликата [Есть строки JavaScript неизменны? Нужен ли мне «построитель строк» ​​в JavaScript?] (Http://stackoverflow.com/questions/51185/are-javascript-strings-immutable-do-i-need-a-string-builder-in-javascript) –

+0

RegExp альтернативный https://stackoverflow.com/a/47460488/1383168 – Slai

ответ

0

Попробуйте это:

function alternativeCase(string){ 
    var output = ""; 
    for(var i = 0; i < string.length; i++){ 
     if (i % 2 != 0) { 
      output += string[i].toUpperCase(); 
     } 
     else { 
      output += string[i].toLowerCase(); 
     } 
    } 
    return output; 
} 
+0

Спасибо! Это сработало для меня отлично! Я не был так далеко от моего кода! – Ann0nym

+0

Нет, вы не были далеко, вы были рядом! Как отмечалось в других комментариях, строки в JS являются «неизменными», что означает, что они не могут быть изменены в памяти, не присваивая их новой переменной (или самой себе), поэтому вы не можете установить символ внутри строки так, как вы мы. Это была единственная проблема с вашим методом. –

0

Строки в JavaScript неизменны, попробуйте вместо этого:

function alternativeCase(string){ 
 
    var newString = []; 
 
    for(var i = 0; i < string.length; i++){ 
 
     if (i % 2 != 0) { 
 
      newString[i] = string[i].toUpperCase(); 
 
     } 
 
     else { 
 
      newString[i] = string[i].toLowerCase(); 
 
     } 
 
    } 
 
    return newString.join(''); 
 
}

2
function alternativeCase(string){ 
    return string.split('').map(function(c,i) { 
    return i & 1 ? c.toUpperCase() : c.toLowerCase(); 
    }).join(''); 
} 

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

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