javascript - 以正确的顺序附加字符串

标签 javascript string

我有一个哈希表,其中包含两个主键下的值:SubjectQuery。每个 Query 可以有多个 Subject

例如

Query-blabla, Subject1-12, Subject2=13

我正在尝试构建一个包含每个 Query 自己的主题的字符串,并且需要用逗号 , 分隔它,以便我可以将其插入到cvs 文件,由 coulmns 提供。

一切都很好,我遇到的唯一问题是粗线。

现在看起来像这样:

subject,subject,query,subject,,subject,subject,query,subject,,subject...

它需要是:

subject, subject, query
subject,subject, query etc...

我有以下代码

for (var k = 0; k < keyToGeneDetailMappingGroupArray.length; k++)
{

    var isGroupContained = keyToGeneDetailMappingGroupArray[k].hasItem(currentKey);

    if (isGroupContained)
    {
        //Not relevent: Watch the data structures: sumElements += keyToGeneDetailMappingGroupArray[k].getItem(currentKey).length;
        sumElements += 1; 

        linescontentSubject = keyToGeneDetailMappingGroupArray[k].items[currentKey][0].Subject;
        linescontentQuery = keyToGeneDetailMappingGroupArray[k].items[currentKey][0].Query;

        databegin = linescontentQuery + "," + linescontentSubject;

        if(dataAll.includes(linescontentQuery))
        {
            dataAll = linescontentSubject + "," + dataAll + ",";
        } //this is the problem//
        else 
        {
            dataAll = dataAll + databegin + "\r";
        }

        index += Math.pow(2, k);
    }
}

最佳答案

看起来您需要在完成该行之前 trim 尾部逗号

else {
    dataAll = dataAll.substring(0, dataAll.length - 2);
    dataAll = dataAll + databegin + "\r";
}

另一种更简洁的替代方法是使用数组代替字符串连接,并使用数组的join方法完成。

var dataLine = [];

for (var k = 0; k < keyToGeneDetailMappingGroupArray.length; k++){
    var isGroupContained = keyToGeneDetailMappingGroupArray[k].hasItem(currentKey);

    if (isGroupContained){
        //Not relevent: Watch the data structures: sumElements += keyToGeneDetailMappingGroupArray[k].getItem(currentKey).length;
        sumElements += 1; 

        linescontentSubject = keyToGeneDetailMappingGroupArray[k].items[currentKey][0].Subject;
        linescontentQuery = keyToGeneDetailMappingGroupArray[k].items[currentKey][0].Query;

        databegin = linescontentQuery + "," + linescontentSubject;

        if(dataLine.includes(linescontentQuery)){
            dataLine.splice(0, linescontentSubject); 
        }
        else {
            dataAll = dataLine.join(',') + databegin + "\r";
            dataLine = []; //reset the dataline
        }

        index += Math.pow(2, k);
    }
}

关于javascript - 以正确的顺序附加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41381615/

相关文章:

javascript - 检查动态路由 express js

java - 调用一个包含所有需要的代码的函数,或者调用一个包含另一个函数的函数,哪个更好?

c - 如何在C中打印字符串的一部分

arrays - 字符串如何存储在 GO 数组中?

string - 最多 n 个位置不同的字符串数?

javascript - 如何在 Aptana 中升级 JSLint?

javascript - 单击 dojo 网格标题的日期排序

javascript - jqGrid 分页不适用于 json 数据类型

java - Long.toString(i) 与 i + ""之间的区别

javascript - 在javascript中指示字符串不带引号