作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建机场风格的航站楼到达/出发 TableView 。尝试根据可查看的窗口使行动态可见。我有一个可以有任意行数的数组。每行本身就是一个数组。我试图根据 View 可以支持的表行数将数组中的行分解为 block 。
所以我的问题是我不确定如何根据我想要的 block 的动态大小将其正确地分解成 block 。我尝试过切片和拼接,但它只添加到shortArrays
中的第一个元素那么其余元素都是空的。
传入数据:
array([array1], [array2], [array3], [array4], [array5], [array6], [array7], [array8], [array9], [array10], [array11], [array12], [array13]), [array14]), [array15]))
传出数据:
array([[array1], [array2], [array3], [array4], [array5], [array6], [array7], [array8], [array9], [array10]], [[array11], [array12], [array13], [array14], [array15]]) // 2 rows, row1: 10 arrays, row2: 5 arrays
var jsonData = JSON.parse(data); // data is value returned from ajax
var maxRowsPerTableView = 10; // Hardcoded as an example
var totalTablesToMake = 2; // Hardcoded as an example
var longArray = jsonData;
var shortArrays = [];
var tempCount, doorCount = 0; // Keeps track of which index
for(a = 0; a < totalTablesToMake; a++)
{
temp = [];
for(b = 0; b < maxRowsPerTableView; b++)
{
temp.push(longArray[b + doorCount]);
tempCount = b;
}
doorCount += tempCount;
shortArrays.push(temp);
}
结果:
shortArrays([10 elements],[10 elements]) // This isn't actual output, just a visual description so you can see what results I get.
当前代码将输出:shortArrays
,有 2 行,每行有 10 个元素。假设 jsonData
中只有 15 个元素。 shortArrays
中的第二行仍将有 10 个元素,但最后 5 个将是 undefined
。
最佳答案
longArray[b + doorCount]
如果超出数组范围,
将返回 undefined。所以你要么填写其他内容(例如数组)
longArray[b + doorCount]||[];
或者你停止循环:
mainloop:for(a = 0; a < totalTablesToMake; a++)
{
temp = [];
for(b = 0; b < maxRowsPerTableView; b++)
{
if(b+a*maxRowsPerTableView>=longArray.length) break mainloop;
temp.push(longArray[b + doorCount]);
tempCount = b;
}
doorCount += tempCount;
shortArrays.push(temp);
}
关于javascript - 如何根据动态 block 将数组拆分为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454450/
我是一名优秀的程序员,十分优秀!