将多个字符串连接成一个单一的字符串

6
我有一个循环正在生成一个字符串。
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");
    }
}
3个回答

18
你可以使用 Array.join 将数组转换为字符串。
例如:
var arr = ['a1', 'b1', 'c1'];
console.log(arr.join(',')); // 'a1,b1,c1'

我更新了我的问题,也许之前有点混淆。这不是我想要实现的。我有一个单独的变量名,将在每个循环中被替换。我想获取所有这些字符串,然后将它们组合成一个。 - Zac
2
@Zac:使用 += 运算符吗?allStrings += singleString; - gen_Eric
谢谢,我本来在寻找另一种解决方案,但是在随机搜索时我找到了这个答案。 - Mihir Oza

2
你可以摆脱那个循环并使用以下代码:
array.join(',')

将数组转换为以逗号分隔的字符串,请使用以下代码,其中array是要转换的数组:

var str = array.join(",");

要将字符串连接在一起,您只需要构造一个字符串连接:

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

0

听起来你正在为独立的 XML 节点制作单独的 XHR,如果是这样的话,你可能需要重新考虑你的方法。如果可能的话,我会在 XML 节点中迭代所有必要的请求数据,并收集它们的完整性。然后你可以进行单个 XHR 请求(减少 HTTP 连接,这是好的!)并获得一个包含响应的全部信息的单个响应(即 allStrings)。这对你的服务器来说应该更容易,而且在几乎所有情况下都能在客户端方面产生明显的差异。


是的,你说得对。不过我必须这样做... 故事很长,但它需要一遍又一遍地对比来自一个节点的数据和第二个请求。 - Zac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接