이 코드는 문제를 해결합니다. 모든 사건을 다 다루는 지 모르겠지만 생각합니다. 부담없이 여기에서 적응하십시오.
//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;
}
}
어떻게 이런 식으로 처리할까요? http://jsfiddle.net/b1nth804/ – mdixon18
오, 알겠습니다 ... 나는 이것에 더 많은 시간을 할애해야한다고 생각합니다. 그러나 @ user2957047처럼, 내가 필요로 게시 한 코드를 적용 할 기술이나 인내가 없다면, 디자인을 재고하는 것이 가치가있을 수 있습니다. 당신이 묻는 것에 대한 해결책은 사소한 것이 아닙니다. 당신이 더 많은 세부 사항을 제공 할 수 있다면 당신을 도울 수있을 것입니다. – QuantumLicht
글자를 섹션으로 나눌 때 잘 작동하여 1-16, 1-6,10-12, 1-10,13-14 같은 것들은 모두 완벽합니다. 출력. 그러나 1,2,3,4,5,8,9,10,11 대신에 올바른 일련의 숫자가 없으면 1,3,5,7,8,9,10,11 같은 것을 얻습니다. 당신은 1-1,3-3,5-5,7-11로 남을 것입니다. 다음 번호가 따르지 않으면 숫자를 더하면 간단히 1,3이 될 것입니다. , 5,7-11 – mdixon18