2011-10-14 35 views
0

這是從服務器中剔除responseText的功能。爲了清晰起見,我評論了數據結構。雙重分裂服務器響應返回不正確

function chopUpResponse(serverResponse) 
{ 
     // serverResponse: ("a|b|[email protected]|e|[email protected]|h|i") 
    console.log("chopUpResponse called"); 
    var ranges = []; 
    var firstSplit = []; 
    var secondSplit = []; 

    firstSplit = serverResponse.split("@"); 
    console.log("firstSplit: " + firstSplit); 
     // result: ("a|b|c", "d|e|f", "g|h|i") 

    for (var i=0; i<firstSplit.length; i++) 
    { 
     secondSplit = secondSplit.concat(firstSplit[i].split("|")); 
     console.log("secondSplit: " + secondSplit); 
      // desired: ("a","b","c","d","e","f","g","h","i") 
    } 

    for (var j=0; j<firstSplit.length; j++) 
    { 
      console.log("j: "+j); 
      for (var k=0; k<3; k++) 
      // would be nice to generate the '3' dynamically from the @ delimiter 
      { 
        console.log("k: "+k); 
        ranges[j,k] = secondSplit[j+1*k]; 
          // the +1 so we're not * by zero! 
          // j+1*k should equal secondSplit.length... 
        console.log("ranges["+j+","+k+"]: " + ranges[j,k]); 
      } 
    } 
    return ranges; 
} 

最後一個函數的目的是基本上構建一個二維數組。出於某種原因,我很想念,而不是什麼我期待,我得到這個:

ranges["a,b,c","b,c,d","c,d,e"] 

我缺少什麼?有一個更好的方法嗎?我希望我可以出局了一些PHP這個劇本里面,因爲它的很多在處理這類數據的更好的地獄......

+0

我知道它在第二個循環中的計數器出了問題......但我不知道如何通過整個secondSplit數組正確地執行步驟... aaaaarrrghghgghhhh ... :( – WhiteRau

+0

忘記了它。應該使用一個計數器。愚蠢的菜鳥錯誤... – WhiteRau

回答

0
function chopUpResponse(serverResponse) 
{ 
    // serverResponse: ("a|b|[email protected]|e|[email protected]|h|i") 
    console.log("chopUpResponse called"); 
    //var ranges = []; 
    var firstSplit = []; 
    //var secondSplit = []; 

    firstSplit = serverResponse.split("@"); 
    console.log("firstSplit: " + firstSplit); 
    // result: ("a|b|c", "d|e|f", "g|h|i") 

    for (var i=0; i<firstSplit.length; i++) 
    { 
     //secondSplit = secondSplit.concat(firstSplit[i].split("|")); 
     firstSplit[i] = firstSplit[i].split("|"); 
     //console.log("secondSplit: " + secondSplit); 
     // desired: ("a","b","c","d","e","f","g","h","i") 
    } 

    //for (var j=0; j<firstSplit.length; j++) 
    //{ 
    //  console.log("j: "+j); 
    //  for (var k=0; k<3; k++) 
    //  // would be nice to generate the '3' dynamically from the @ delimiter 
    //  { 
    //    console.log("k: "+k); 
    //    ranges[j,k] = secondSplit[j+1*k]; 
    //      // the +1 so we're not * by zero! 
    //      // j+1*k should equal secondSplit.length... 
    //    console.log("ranges["+j+","+k+"]: " + ranges[j,k]); 
    //  } 
    //} 
    //return ranges; 
    return firstSplit; 
} 
0
function chopUpResponse(res) { 
    // Split on the '@' 
    var split = res.split("@"), 
     // Loop counter 
     i = 0, 
     // Number of arrays produced by splitting on '@' 
     len = split.length, 
     // Will be each array produced by splitting on '@' 
     // inside the loop body 
     part, 
     // Holds the results 
     ret = []; 

    for (; i < len; i++) { 
     part = split[ i ]; 
     // Array::push adds items to an array. Function::apply unpacks an array 
     // as indidual arguments 
     ret.push.apply(ret, part.split("|")) 
    } 

    // Over and out. 
    return ret; 
} 

希望幫助!乾杯。