此代码生成逗号分隔的字符串,以便为另一个页面的查询字符串提供ID列表,但字符串末尾有一个额外的逗号。如何删除或避免使用额外的逗号?
<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>
答案 0 :(得分:89)
使用Array.join
var s = "";
n.each(function() {
s += $(this).val() + ",";
});
变为:
var a = [];
n.each(function() {
a.push($(this).val());
});
var s = a.join(', ');
答案 1 :(得分:25)
s = s.substring(0, s.length - 1);
答案 2 :(得分:12)
您可以使用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);
答案 3 :(得分:6)
您可以直接跳过添加它,而不是删除它:
var s = '';
n.each(function() {
s += (s.length > 0 ? ',' : '') + $(this).val();
});
答案 4 :(得分:5)
使用substring
var strNumber = "3623,3635,";
document.write(strNumber.substring(0, strNumber.length - 1));
&#13;
使用slice
document.write("3623,3635,".slice(0, -1));
&#13;
使用map
var strNumber = "3623,3635,";
var arrData = strNumber.split(',');
document.write($.map(arrData, function(value, i) {
return value != "" ? value : null;
}).join(','));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
使用Array.join
var strNumber = "3623,3635,";
var arrTemp = strNumber.split(',');
var arrData = [];
$.each(arrTemp, function(key, value) {
//document.writeln(value);
if (value != "")
arrData.push(value);
});
document.write(arrData.join(', '));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 5 :(得分:3)
使用'普通'javascript:
var truncated = s.substring(0, s.length - 1);
答案 6 :(得分:2)
更原始的方法是将each
循环更改为for
循环
for(var x = 0; x < n.length; x++ ) {
if(x < n.length - 1)
s += $(n[x]).val() + ",";
else
s += $(n[x]).val();
}
答案 7 :(得分:1)
Sam的回答是迄今为止最好的,但在这种情况下,我认为map比each更好。您正在将元素列表转换为其值列表,而这正是map
的设计目标。
var list = $("td.title_listing input:checked")
.map(function() { return $(this).val(); })
.get().join(', ');
编辑:哎呀,我错过了CMS让我使用了map
,他只是根据我slice
的建议将其隐藏起来。
答案 8 :(得分:0)
您可以使用以下扩展方法:
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 helper methods
答案 9 :(得分:0)
这是一个简单的方法:
var str = '1,2,3,4,5,6,';
strclean = str+'#';
strclean = $.trim(strclean.replace(/,#/g, ''));
strclean = $.trim(str.replace(/#/g, ''));
答案 10 :(得分:-1)
s = s.TrimEnd(",".ToCharArray());
答案 11 :(得分:-1)
编写一个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 强>