如何删除最后一个逗号?

此代码生成一个逗号分隔的字符串,以便为另一个页面的查询字符串提供id列表,但字符串末尾有一个额外的逗号。 如何删除或避免使用额外的逗号?

 $(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); }  

使用Array.join

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

变为:

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

您可以将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); 

您可以直接跳过添加它,而不是删除它:

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

使用substring

 var strNumber = "3623,3635,"; document.write(strNumber.substring(0, strNumber.length - 1)); 

使用’普通’javascript:

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

更原始的方法是将each循环更改为for循环

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

到目前为止,Sam的答案是最好的,但我认为在这种情况下, 地图将是比每个人更好的选择。 您正在将元素列表转换为其值列表,这正是map设计的类型。

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

编辑:哎呀,我错过了CMS让我使用map ,他只是把它隐藏在我跳过的slice建议之下。

您可以使用以下扩展方法:

 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帮助方法

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

写一个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演示