2013-05-14 38 views
2

這看起來像是一個非常基本的要求。但是我的頭腦太模糊,無法找出正確的做法。我有一個關鍵字的多維數組。這些正在分解成列。我計劃將它們限制在一次只出現在一列中。總共5列,每列包含2個關鍵字。這是由「頁面」組成的。創建頁面排列

我下面有什麼是錯的。內部for我試圖分配一個頁面,是不正確的。外部for確實確切我所需要的(限制數據爲2個字/列)。

for (i; i < keywordData.length; i++) { 
    nkeywordData[i] = keywordData[i].splice(start,limit); 
    for (var k=0; k < nkeywordData.length; k++){ 
     pages[k] = nkeywordData; 
    } 
} 

樣本數據:

$rootScope.keywordData = [ 
    ["column1","test1","test1","tea","party", "water bottle"], 
    ["column2","test2","test2","test2 test2"], 
    ["column3","test3","t3","longer test3 "], 
    ["column4","test4","testing4 tesf asdfsdf"], 
    ["column8","test5","test5 asdfsdfasdfasdfasa asda asdfsas"] 
]; 

我在其他地方函數處理將東西放入柱等就不能獲得頁面的工作。

預期結果:3頁,最後一頁將只有party, water bottle在數組中,因爲它是最長的。其他數組將是空的。

這是第一個「頁面」的樣子。然後,當我點擊「顯示更多」時,下一個「頁面」將被添加到它下面。

keygenshowmore

+0

如果一個頁面只包含一列或者是多維的? – sh0ber

+0

頁面將是我假設的多維空間。在索引0處,我們會找到5列以上的前2個「行」數據。我添加了一張截圖,以幫助可視化事物的外觀。 – EnigmaRM

回答

0

像你描述這會給你的陣列pages。讓我知道如果我錯過了什麼。

var idxPage; 
for (var i=0; i < keywordData.length; i++) { 
    column = keywordData[i]; 
    for(var k=0; k < column.length; k++){ 
     idxPage = Math.floor(k/limit); 
     if (!pages[idxPage]){ 
      pages[idxPage] = []; 
     } 
     if (!pages[idxPage][i]){ 
      pages[idxPage][i] = []; 
     } 
     pages[idxPage][i].push(column[k]); 
    } 
} 

alert(pages[0][0]); // ["column1", "test1"] 
alert(pages[0][1]); // ["column2", "test2"] 
alert(pages[1][0]); // ["test1", "tea"] 
alert(pages[1][1]); // ["test2", "test2 test2"] 
alert(pages[2][0]); // ["party", "water bottle"] 
alert(pages[2][1]); // undefined 

這裏是一個fiddle

+0

邏輯似乎在那裏。 'column1,test'的預期結果實際上返回'test1,tea' – EnigmaRM

+0

您是否檢查過提琴,完全如此處所述。我將添加警報。 – sh0ber

+0

啊。我意識到爲什麼它會跳過第一個「行」......因爲我是在原始'for'循環之後進行測試的,它將來自'keywordData'的數據拼接起來。所以這個問題是自己造成的(因爲我的大部分問題都是!) – EnigmaRM