【问题标题】:Join multiple strings into one single string将多个字符串连接成一个字符串
【发布时间】:2012-02-02 17:45:17
【问题描述】:

我有一个生成字符串的循环

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");
    }
}

【问题讨论】:

    标签: javascript arrays string


    【解决方案1】:

    听起来您正在为独立的 XML 节点制作单独的 XHR,在这种情况下,您可能需要重新考虑您的方法。如果可能,我将遍历整个 XML 节点并收集所有必要的请求数据。然后,您可以创建一个 XHR(减少 HTTP 连接,这很好!)并获得一个可以包含整个响应的单个响应(即 allStrings)。在您的服务器上应该更容易,并且在几乎所有情况下都会在客户端产生显着差异。

    【讨论】:

    • 是的,你是对的。不过,我不得不这样做……说来话长,但它需要针对第二个请求一遍又一遍地检查来自一个节点的数据。
    【解决方案2】:

    如果该循环并使用,您可以摆脱:

    array.join(',')
    

    其中array 是您要转换为以逗号分隔的字符串的数组。

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

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

    【讨论】:

      【解决方案3】:

      您可以使用Array.join 将数组转换为字符串。

      例子:

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

      【讨论】:

      • 我更新了我的问题,也许它令人困惑。这不是我想要达到的目标。我有一个变量名,每个循环都会被替换。我想抓住所有这些字符串,然后将它们组合成一个。
      • @Zac:使用+= 运算符? allStrings += singleString;
      • Thaks 我一直在寻找另一种解决方案,但在随机搜索时我得到了这个答案。
      猜你喜欢
      • 2014-03-15
      • 2013-05-15
      • 1970-01-01
      • 2022-12-17
      • 2015-05-02
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      相关资源
      最近更新 更多