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(", ");