Объединить несколько строк в одну строку - PullRequest
5 голосов
/ 05 января 2012

У меня есть цикл, который генерирует строку

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 ]

14 голосов
/ 05 января 2012

Вы можете использовать Array.join для преобразования массива в строку.

Пример:

var arr = ['a1', 'b1', 'c1'];
console.log(arr.join(',')); // 'a1,b1,c1'
2 голосов
/ 05 января 2012

Вы можете избавиться, если этот цикл и использовать:

array.join(',')

Где array - массив, который вы хотите превратить в строку, разделенную запятыми.

Чтобы объединить строки, вам просто нужно создать конкатенацию строк:

allStrings.concat(string1, string2, ..., stringX)
0 голосов
/ 05 января 2012

Похоже, вы создаете отдельные XHR для независимых узлов XML, и в этом случае вы можете пересмотреть свой подход. Если возможно, я бы перебрал все узлы XML и собрал все необходимые данные запроса. Затем вы можете сделать один XHR (сокращение HTTP-соединений, что хорошо!) И получить один ответ, который может содержать весь ответ (то есть allStrings). Это должно быть проще на вашем сервере и иметь заметные отличия на стороне клиента почти во всех ситуациях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...