そのため、いくつかのテーブルを操作していて、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でどのようなメソッドを使用できますか?
このコードはあなたの問題を解決します。すべてのケースをカバーしているかどうかはわかりませんが、カバーしていると思います。ここから自由に適応してください。
//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;
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加