2012-01-04 117 views
2

我有一個循環正在生成的字符串加入多個字符串合併爲一個單一的字符串

function jsonResponse(response) 
{ 
    var singleString = a + "," + b + "," + c + "|"; 
} 

console.log(singleString);

我看到他們都產生:

a1,b1,c1| 
a2,b2,c2| 
a3,b3,c3| 

但我怎麼可以創建一個新的變量allStrings將所有這些連接成一個字符串?該循環是ajax響應的一部分,該響應通過循環xml節點來檢索這些變量的數據。我想我需要讓它們成爲數組的一部分,然後將它們重新組合成一個大字符串?

爲了進一步澄清什麼,我想實現的是一樣的東西:

var allStrings = singleString[0] + singleString[1] + singleString[2] ; 

    a1,b1,c1|a2,b2,c2|a3,b3,c3| 

爲了更好地解釋它看起來像這樣的循環:

$j.ajax({ 
    type: "GET", 

    url: "test.xml", 
    dataType: "xml", 
    success: function parseXml(data) 
    { 
     $j('.loader').fadeOut(); 
     itemQueue = $j(data).find("ITEM").map(function() 
      { 
       return { 
         date: $j("LAST_SCAN" , this).text(), 
         type : $j("PRODUCT_TYPE", this).text(), 
         cat : $j("CLASS_NAME", this).text(), 
         }; 
      }).get(); 
      getNextItem(); 

     } 
    }); 

function getNextItem() 
    {  
     var item = itemQueue[0]; 
     var singleString = item.date+ "," + item.type + "," + item.cat + "\n"; 
     console.log(singleString); 

     $j.ajax({ 
      url: s7query, 
      dataType: 'jsonp' 
     }); 
     } 

function s7jsonResponse(response) 
{ 
    var item = itemQueue.shift(); 
    if (itemQueue.length) 
    { 
     getNextItem(); 
    } 
    // run other processes when finished with checks 
    if (!itemQueue.length) 
    { 
     // alert ("ALL DONE"); 
    } 
} 

回答

10

可以使用Array.join到一個數組轉換爲一個字符串。

例子:

var arr = ['a1', 'b1', 'c1']; 
console.log(arr.join(',')); // 'a1,b1,c1' 
+0

我更新了我的問題,也許它很混亂。這不是我想要實現的。我有一個變量名稱將被替換爲每個循環。我想抓住所有這些字符串,然後將所有這些字符串合併爲一個。 – Zac 2012-01-04 20:31:18

+0

@Zac:使用'+ ='運算符? 'allStrings + = singleString;' – 2012-01-04 20:33:13

+0

Thaks我正在尋找另一個解決方案,但隨機搜索我得到了這個答案。 – 2018-02-08 07:40:40

2

你可以擺脫如果循環及用途:

array.join(',') 

哪裏array是要在轉向用逗號分隔的字符串數組。

要加入串在一起,你只需要構造一個字符串連接:

allStrings.concat(string1, string2, ..., stringX) 
0

這聽起來像你正在做獨立的XML節點獨立XHR時,在這種情況下,你可能要重新考慮你的方法。如果可能,我會遍歷整個XML節點並收集所有必需的請求數據。然後,您可以製作一個XHR(減少HTTP連接,這很好!),並獲得可能包含整個響應的單個響應(即allStrings)。它應該更容易在你的服務器上,並在幾乎所有情況下在客戶端做出明顯的區別。

+0

是的,你是對的。儘管如此,我不得不這樣做......但是它需要針對第二個請求反覆檢查來自一個節點的數據。 – Zac 2012-01-04 20:26:38

相關問題