2013-12-22 81 views
0

我正在構建一個對象數組。結構應該是這樣的:JS對象中包含的數組嵌套兩深

var array = [ 
{ 'keyword' : 'somekeyword', 
    'guidelines' : [ "guideline1", "guideline2", "guideline3"] 
}, 
{ 'keyword' : 'anotherkeyword', 
    'guidelines' : [ "guideline1", "guideline2", "guideline3"] 
} 
] 

相反,它是這樣的:

var array = [ 
{ 'keyword' : 'somekeyword', 
    'guidelines' : [[ "guideline1", "guideline2", "guideline3"]] 
}, 
{ 'keyword' : 'anotherkeyword', 
    'guidelines' : [[ "guideline1", "guideline2", "guideline3"]] 
} 
] 

我所建立我的對象,以得到嵌套的指導方針陣列上的是第二級做錯了什麼?這是構建陣列,在一個HTML文件,從數據表中讀取的功能:

$(html).find('tr').each(function() { 
       keywordObj = {}; 
       guidelinesCell; 
       $(this).find('td').each(function() { 
        cellClass= $(this).attr('class'); 
        if (cellClass === 's2') { 
         keywordObj.keyword = $(this).text(); 
        } else if (cellClass === 's3' || cellClass == 's4') { 
         guidelinesCell = []; 
         guidelinesCell.push($(this).html().split('<br>')); 
         //Possibly it's this push that's causing the problem? 

         keywordObj.guidelines = guidelinesCell; 

         console.log(guidelinesCell) 
         console.log(keywordObj.guidelines) 

         //At this point, the array is already nested- the console logs return eg                 
          [Array[2]] 
           0: Array[2] 
           0: "GuidelineName1.pdf" 
           1: "GuidelineName2.pdf" 
        } 
       }); 
       i ++; 

       if (keywordObj.guidelines && keywordObj.guidelines[0].length > 1) { 

        keywordsToLeitlinien.push(keywordObj); 
       } 

      }); 

僅供參考,這裏是加價的樣本它是從閱讀:

<tr dir="ltr"> 
    <td class="hd"> 
     <p style="height:39px;">.</p> 
    </td> 
    <td dir="ltr" class="s2">samplekeyword</td> 
    <td dir="ltr" class="s4">GuidelineName.pdf <br>GuidelineName.pdf</td> 
</tr> 

編輯補充:

這是不是在這個文件中我處理的問題,但我最終輸出數組到JSON文件,我寧願解決這個問題比保持爲解決此排序輸出:

{"keyword":"keywordname","guidelines":[["guidelineName1 ","guidelineName2"]]} 

回答

2

因爲split返回數組的位置:

$(this).html().split('<br>') 

而且因爲你正在推動這個陣列到另一個陣列,它將成爲嵌套。

相反,你可以試試:

guidelinesCell = $(this).html().split('<br>') 
+0

你說的沒錯,你會得到的是最快的正確答案蜱(當我允許接受的答案)。乾杯! – Ila

0

我認爲push是jQuery函數返回數組的問題。嘗試只推的第一個元素:

guidelinesCell.push($(this).html().split('<br>')[0]); 
         //Possibly it's this push that's causing the problem? 
0

.split將字符串分割成一個數組。 .push是將元素添加到數組的操作。所以你所擁有的是[],並且你正在推動["guideline values"]創建嵌套。

你應該使用,而不是.push什麼是.concat

2

此行

guidelinesCell.push($(this).html().split('<br>')); 

.split會返回一個數組,所以它本質上是一樣的推陣列到另一個陣列。

所以才分配到guidelinesCell分裂的結果,而不是

guidelinesCell = $(this).html().split('<br>'); 
相關問題