2014-11-30 2 views
-1

은 그래서 일부 테이블 함께 일하고 있어요 그리고 지금은 정보가 같은 문자열 형식의 정보에서 가져온되고 숫자 1 ~ 16 사이에 저장하려고 해요 :JQuery와 문자열 조작 함께

    의 3 개 이상 한 접점이 말을하자, 그래서 만약
  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

그래서 나는 그룹 수를 싶습니다 주문 예에서 RS는 : 1,2,3,4,5이 그래서 위가 될 것 1-3,5

될 것입니다 :

  1. 1-16
  2. 1-6,11,12
  3. 1, 2,6-10,12

내가 jQuery를 어떤 방법의 종류를 취할 수 있습니다 이것을 성취하기 위해서?

답변

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; 

    } 
} 
+0

어떻게 이런 식으로 처리할까요? http://jsfiddle.net/b1nth804/ – mdixon18

+0

오, 알겠습니다 ... 나는 이것에 더 많은 시간을 할애해야한다고 생각합니다. 그러나 @ user2957047처럼, 내가 필요로 게시 한 코드를 적용 할 기술이나 인내가 없다면, 디자인을 재고하는 것이 가치가있을 수 있습니다. 당신이 묻는 것에 대한 해결책은 사소한 것이 아닙니다. 당신이 더 많은 세부 사항을 제공 할 수 있다면 당신을 도울 수있을 것입니다. – QuantumLicht

+0

글자를 섹션으로 나눌 때 잘 작동하여 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

0

JQuery는 필요한 것이 아닙니다. 배열 조작을 수행하는 일종의 알고리즘이나 함수가 필요합니다. 도움이 될 수도 있습니다 ->https://stackoverflow.com/a/8905511/2957047. 성취하려는 것에 대한 자세한 내용을 제공 할 수 있습니다. 응용 프로그램의 디자인 수정이 더 쉬울 수도 있습니다.