创建Pages数组

时间:2013-05-14 19:57:42

标签: javascript angularjs

这似乎是一个非常基本的要求。但是我的头脑太模糊了,无法弄清楚这样做的正确方法。

我有一个多维关键字数组。这些被分成列。我计划将它们限制在一次只出现在一列中。共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

1 个答案:

答案 0 :(得分: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