2014-09-29 4 views
-1

Я пытаюсь сделать цикл for в моем массиве и изменить первую букву, если это была конкретная буква, проблема в том, что цикл работает только для первого элемента массива.Измените первый символ в массиве

так, если массив был A123, A345, A567 Это изменит только A123 To L123

вот мой код

$("#at").click(function() { 
    var str= $("#field").val(); 
    var res = str.split(" "); 

    var index =0; 
    for (index= 0; index<res.length; index++) { 


     if (res[index].substring(0,1) =='A') { 
     res[index] = res[index].substring(1); 
     res[index] = "L" + res[index]; 

} 

    } 

$("#field").val(res); 

Я еще новичок в JQuery, так что если есть лучший способ сделать это, пожалуйста, помогите

+0

'разреш [индекс] .substring (0,1) == 'A'' это неверно. Это должно быть res [index] .index ('A') == '0' –

+0

Если вы уже определили 'index', вам не нужно снова устанавливать значение. 'for (index; index

+0

@TusharRaj Не могли бы вы объяснить? –

ответ

2

Ваш массив res правильно установлен в ["L123,", "L345,", "L567"].

Если вы попытаетесь вывести это значение, используя $("#field").val(res), вы задаете значение #field в массив, который имеет непредсказуемые результаты (и может отличаться в разных браузерах). Значения должны быть строками.

Попробуйте вместо этого для последней строки:

$("#field").val(res.join(" ")); 

который присоединится массив обратно в строку перед отображением.

Working JSFiddle

+0

Спасибо, это сработало, не могли бы вы объяснить, почему нет, когда я нажимаю кнопки? –

+1

Как вы это понимаете? Вы разделяете строку на '(пробел)' и соединяете ее вместе '(space)' в конце, поэтому запятые никогда не исчезают (они являются частью каждого массива элементов - 'A123,', например). Тем не менее, было бы более читаемым/разумным разделять и присоединяться с помощью ',' (запятая), если вы знаете, что строка всегда будет '' 'как ее разделитель. – Shai

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