2016-12-29 35 views
0

我有一個散列表,其中包含兩個主鍵下的值:SubjectQuery。每個Query可以有多個Subject以正確的順序追加字符串

例如

Query-blabla, Subject1-12, Subject2=13 

我試圖構建一個包含每個Query自己的科目一個字符串,它需要用逗號,被分隔的,所以我可以將其插入到CVS文件,由coulmns。

一切都很好,我唯一的問題就是粗線。

現在看起來是這樣的:我有以下代碼

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); 
    } 
} 
+0

你可以包含至少一個哈希表的樣本嗎? –

+0

我認爲你需要更好的解釋一下,如果你輸入一個輸入的例子和一個輸出的例子,它會有幫助 – Emiliano

+1

我認爲你的問題是你只在行的末尾連接''\ r'',但是你必須連接''\ r \ n''。 – dloeda

回答

0

它看起來像你需要裝飾

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

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

它需要在完成該行之前的尾部逗號

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

一種替代,一個更簡潔,是使用數組代替字符串連接和使用陣列的加入方法完成。

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