Javascript each:不要在最后一个字段中添加逗号
我想得到一个变量中所有字段的值,用逗号分隔。例如:Javascript each:不要在最后一个字段中添加逗号,javascript,jquery,Javascript,Jquery,我想得到一个变量中所有字段的值,用逗号分隔。例如:1,2,3 下面的代码可以正常工作,但它也只在最后一个值的末尾添加逗号。我怎样才能去掉它 fields = $('.wrap').find('.text'); var data = ''; fields.each(function() { var value = $(this).val(); if ( value != '' ) { data += ' ' + value + ','; } })
1,2,3
下面的代码可以正常工作,但它也只在最后一个值的末尾添加逗号。我怎样才能去掉它
fields = $('.wrap').find('.text');
var data = '';
fields.each(function() {
var value = $(this).val();
if ( value != '' ) {
data += ' ' + value + ',';
}
});
alert(data);
JSFiddle:
尝试下面的代码,使用循环索引
i
,并根据jQuery对象的长度进行测试
fields = $('.wrap').find('.text');
var length = fields.length;
var data = '';
fields.each(function(i) {
var value = $(this).val();
if ( value != '' ) {
if(i === length-1) { //The last one
data += ' ' + value;
} else {
data += ' ' + value + ',';
}
}
});
更新的我总是使用数组来处理这类事情:
var fields = $('.wrap').find(".text[value!='']");
var data = [];
fields.each(function() {
data.push($(this).val());
});
alert(data.join(','));
你可以删除最后一个字符吗
data = data.substr(0, data.length - 1);
最简单的:只需将最后一行替换为下一行即可
alert(data.slice(0,-1));//where data is string
DOC MDN:除了使用join()方法外,还可以在数组上推送元素 试试这个: 使用长度函数来确定每个 var fields = $('.wrap').find('.text'); var len = fields.length; var data = ''; fields.each(function(index, element) { var value = $(this).val(); if ( value != '' ) { data += ' ' + value; if (index != len - 1) { data += ','; } } }); alert(data); 变量字段=$('.wrap').find('.text'); var len=fields.length; var数据=“”; 字段。每个(函数(索引、元素){ var值=$(this.val(); 如果(值!=''){ 数据+=''''值; 如果(索引!=len-1){ 数据+=','; } } }); 警报(数据);
像这样的怎么样:
var data = $('.wrap').find('.text')
.map(function(i,el){ return el.value || null; })
.get().join(", ");
演示:
jQuery将“通过一个函数传递当前匹配集中的每个元素,生成一个包含返回值的新jQuery对象。”您仍然可以在回调函数中包含if(value!='''{
测试,因为如果您的函数返回null
或未定义的,则.map()
不会使用该特定值。(我在上面使用了| | null
作为if/else结构的快捷方式。)
对结果调用(或),您将得到一个实际的数组,这意味着您可以使用该数组形成一个值以逗号分隔的字符串
如果除了获取值之外,还需要对每个项目进行其他处理,则可以使用.each()
循环,将值添加到一个数组中,然后在循环后加入该数组(与其他一些答案一样),或者只使用字符串.slice()
方法删除尾部逗号和空格字符。谢谢。我刚刚注意到,连接中不需要。
var data = $('.wrap').find('.text')
.map(function(i,el){ return el.value || null; })
.get().join(", ");