每个键值,循环内的连接值

时间:2013-03-22 00:26:45

标签: javascript jquery

所以我有一个字符串,我正在尝试加入内容;如果val长度小于10个字符,请将其与下一个值连接。但是当我尝试这个代码时,它会加入相同的val而不是下一个。

//Set the regex.
myregex = /(<p>.*?<\/p>)/g;
//Variable string.
content =  Example: <p>Hello</p><p>This is my test content</p><p>etc</p>

$(content.match(myregex)).each(function (key, val) {
    var test = $(val).text();
    if (test.length < 10) {
        var n = val.concat(val);
        $('#mydiv').append('<div>' + n + '</div>');
    } else {
        $('#mydiv').append('<div>' + val + '</div>');
    }
})

2 个答案:

答案 0 :(得分:1)

这一行:val.concat(val),确实在复制您的内容。您需要做的是从regex而不是当前值中获取下一个值。以下内容应该有效。

var matches = content.match(myregex),
    myDiv = $('#mydiv');

for (var i = 0, len = matches.length; i < len; i++){
    if (i + 1 < len && matches[i].length < 10){
        myDiv.append('<div>' + matches[i].concat(matches[i+1]) + '</div>');
        i += 1;
    }
    else myDiv.append('<div>' + matches[i] + '</div>');
}

答案 1 :(得分:0)

valval是相同的,所以当然val.concat(val)会复制它。

如果您想使用$.each,我认为加入之前的值可能会更好,因为您不知道下一个值是什么。

var previous = [];
$(content.match(myregex)).each(function (key, val) {
    var test = $(val).text();
    if (test.length < 10) {
        previous = val;
    } else {
        if(previous.length) {
            val = previous.concat(val);
        }
        $('#mydiv').append('<div>' + val + '</div>');
        previous = [];
    }
});