这似乎是一个非常基本的要求。但是我的头脑太模糊了,无法弄清楚这样做的正确方法。
我有一个多维关键字数组。这些被分成列。我计划将它们限制在一次只出现在一列中。共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
,因为它是最长的。其他数组将为空。
这是第一个“页面”的样子。然后,当我点击“显示更多”时,下一个“页面”将附加在它下面。
答案 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