所以我正在使用一些表,我正试图在数字1-16之间存储,现在信息是以字符串格式从信息中提取的,例如:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
1,2,3,4,5,6,11,12
1,2,6,7,8,9,10,12
所以我想对数字进行分组,如果让我们说顺序超过3个数字,例如:1,2,3,4,5
这将成为1-3,5
所以上面会变成:
1-16
1-6,11,12
1, 2,6-10,12
我可以用jQuery中的哪种方法来实现这个目标?
答案 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。您可能希望提供有关您尝试完成的更多详细信息。修改应用程序的设计可能会更容易。