JQuery字符串操作将数字组合在一起

时间:2014-11-30 01:34:04

标签: jquery

所以我正在使用一些表,我正试图在数字1-16之间存储,现在信息是以字符串格式从信息中提取的,例如:

  1. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
  2. 1,2,3,4,5,6,11,12
  3. 1,2,6,7,8,9,10,12
  4. 所以我想对数字进行分组,如果让我们说顺序超过3个数字,例如:1,2,3,4,5这将成为1-3,5

    所以上面会变成:

    1. 1-16
    2. 1-6,11,12
    3. 1, 2,6-10,12
    4. 我可以用jQuery中的哪种方法来实现这个目标?

2 个答案:

答案 0 :(得分:1)

此代码可以解决您的问题。我不知道它是否涵盖了所有情况,但我认为确实如此。随意适应这里。

//var a = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16";
var a = "1,2,3,4,5,6,11,12";
//var a= "1,2,6,7,8,9,10,12";
var arr = a.split(',');
console.log('result', parseString(arr, arr[0], 0, arr[0]));

function parseString(arr, start, idx, res_string) {
    console.log(arr, start,idx, res_string);
    var starter = parseInt(start, 10);

    while (starter + 1 === parseInt(arr[idx + 1], 10)) {
        <!-- console.log(starter +1,parseInt(arr[idx + 1], 10)); -->
        idx += 1;
        starter += 1;
    }

    if (idx + 1 < arr.length && idx !== starter) {
        res_string += '-' + arr[idx] + ',' + arr[idx + 1];
        return parseString(arr, arr[idx + 1], idx + 1, res_string);
    }
    else if (idx === starter) {
        return parseString(arr, arr[idx + 1], idx + 1, res_string);
    }
    else if ( start === arr[arr.length -1]){
        return res_string;
    }
    else{
        res_string += '-' + arr[idx];
        return res_string;

    }
}

答案 1 :(得分:0)

JQuery不是你需要的。你需要某种算法或函数来进行数组操作。这可能会对您有所帮助 - &gt; https://stackoverflow.com/a/8905511/2957047。您可能希望提供有关您尝试完成的更多详细信息。修改应用程序的设计可能会更容易。