2015-04-20 3 views
0

Я пытаюсь построить оператор (потому что клиент запрашивает его) и хочет удалить последний оператор в цикле for, но все еще включен между циклом.Как удалить последний оператор в цикле for

Это то, чего я пытаюсь достичь (как можно более широкий пример): Я выбрал: 2 года, 2 года, 1 год, 1 год.

Мне удалось достичь этого, но в самом конце он не заканчивается периодом, а заканчивается запятой.

Количество лет выбрано пользователем, поэтому я объявила переменную.

Вот мой код в Javascript:

var out_content = document.getElementById("content"); 
    var in_year = 2; 
    var in_period = ["years","yrs"]; 
    var sText = "I selected: "; 
    for (var i=0;i<in_year; in_year--) 
    { 
     for (var p=0;p<in_period.length;p++) 
     { 
      sText += in_year + in_period[p]; 
      sText += ","; 
     } 
    } 

out_content.innerHTML = sText; 

Что мне делать?

+1

'for (var i = 0; i zerkms

+0

@zerkms Почему бы и нет? Это немного неудобно, но это должно сработать. – Scimonster

+0

@zerkms Я делаю, так как вы меняете цикл каждый раз и в какой-то момент 'i === in_year'. Не рекомендуется, однако, лучше инкрементировать 'i:)' – somethinghere

ответ

0

Самый простой способ решить вашу проблему - просто удалить последний символ (нежелательную запятую) и вместо этого поставить там период.

sText.slice(0,-1)+'.' 

Нарезка от 0 до -1 означает получение символов от начала до одного до последнего.

+0

Самый простой способ, который я когда-либо видел. Благодаря! –

0

Удаление последнего символа из вашей строки, когда предсказуемы, может быть легко достигнуто, как, например:

sText = sText.substring(0, sText.length-2); 

Substring принимает два параметра, заводится (0) и конец (вы хотите length minus 1 здесь, но, так как его рассматривать как массив, который может понадобиться length - 2). Heres больше информации: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/substring

+0

Я считаю, что это лучший способ достичь этого. Поскольку другие методы могут отличаться от браузера к браузеру – Panther

0

Лучший способом справиться с такой проблемой является использование массива, а затем присоединиться к элементам массива:

var sText = "I selected: "; 
var aText = []; 
for (var i=0;i<in_year; in_year--) 
{ 
    for (var p=0;p<in_period.length;p++) 
    { 
     aText.push(in_year + in_period[p]); 
    } 
} 

sText += aText.join() + '.'; 
+0

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

+0

Метод 'join' добавляет запятую, и нет необходимости заменять последнее, потому что это просто не здесь :) Я редактировал сообщение, чтобы добавить конечную точку. – Guillaume

0

Добавьте если заявление до запятой и проверить с переменным значением с р и условие должно пройти но должен завершиться неудачей в последнем заявлении цикла

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