gpt4 book ai didi

javascript - 如何根据动态 block 将数组拆分为二维数组

转载 作者:行者123 更新时间:2023-12-03 04:31:53 25 4
gpt4 key购买 nike

我正在尝试构建机场风格的航站楼到达/出发 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com