Подтвердить что ты не робот

Как удалить последнюю запятую?

Этот код генерирует строку с разделителями-запятыми, чтобы предоставить список идентификаторов в строке запроса другой страницы, но в конце строки есть дополнительная запятая. Как я могу удалить или избежать этой дополнительной запятой?

<script type="text/javascript">
    $(document).ready(function() {
        $('td.title_listing :checkbox').change(function() {
            $('#cbSelectAll').attr('checked', false);
        });
    });
    function CotactSelected() {
        var n = $("td.title_listing input:checked");
        alert(n.length);
        var s = "";
        n.each(function() {
            s += $(this).val() + ",";
        });
        window.location = "/D_ContactSeller.aspx?property=" + s;
        alert(s);
    }
</script>
4b9b3361

Ответ 1

Используйте Array.join

var s = "";
n.each(function() {
    s += $(this).val() + ",";
});

становится:

var a = [];
n.each(function() {
    a.push($(this).val());
});
var s = a.join(', ');

Ответ 2

s = s.substring(0, s.length - 1);

Ответ 3

Вы можете использовать метод String.prototype.slice с отрицательным аргументом endSlice:

n = n.slice(0, -1); // last char removed, "abc".slice(0, -1) == "ab"

Или вы можете использовать метод $.map для создания строки, разделенной запятыми:

var s = n.map(function(){
  return $(this).val();
}).get().join();

alert(s);

Ответ 4

Вместо того, чтобы удалять его, вы можете просто пропустить его добавление в первую очередь:

var s = '';
n.each(function() {
   s += (s.length > 0 ? ',' : '') + $(this).val();
});

Ответ 5

Использование substring

var strNumber = "3623,3635,";

document.write(strNumber.substring(0, strNumber.length - 1));

Ответ 6

Использование "нормального" javascript:

var truncated = s.substring(0, s.length - 1);

Ответ 7

Более примитивным способом является изменение цикла each в цикле for

for(var x = 0; x < n.length; x++ ) {
  if(x < n.length - 1)
    s += $(n[x]).val() + ",";
  else
    s += $(n[x]).val();
}

Ответ 8

Сэм ответ лучше всего, но я думаю, map был бы лучшим выбором, чем each в этом случае. Вы преобразовываете список элементов в список своих значений и что именно такая вещь map предназначена для.

var list = $("td.title_listing input:checked")
    .map(function() { return $(this).val(); })
    .get().join(', ');

Edit: Упс, я пропустил, что CMS избили меня до использования map, он просто скрыл его под предложением slice, которое я пропустил.

Ответ 9

вы можете использовать метод расширения ниже:

String.prototype.trimEnd = function (c) {
    c = c ? c : ' ';
    var i = this.length - 1;
    for (; i >= 0 && this.charAt(i) == c; i--);
    return this.substring(0, i + 1);
}

Чтобы вы могли использовать его, например:

var str="hello,";
str.trimEnd(',');

Вывод: привет.

для дополнительных методов расширения, проверьте ссылку ниже: Методы поддержки Javascript

Ответ 10

 s = s.TrimEnd(",".ToCharArray());

Ответ 11

Напишите функцию javascript:

var removeLastChar = function(value, char){
    var lastChar = value.slice(-1);
    if(lastChar == char) {
      value = value.slice(0, -1);
    }
    return value;
}

Используйте его следующим образом:

var nums = '1,2,3,4,5,6,';
var result = removeLastChar(nums, ',');
console.log(result);

jsfiddle demo