2

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

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

4

1 回答 1

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

这是一个小提琴

于 2013-05-14T20:25:29.083 回答