js逻辑 假设一个页面可用区域开始高度startHeight,底部高度endHeight,我要在这个可用区域里写文字,已知1、一个文本的数组strLines内部有strLines.length条文本,2、每条文本行高fontSize*1.15 3、写strLines.length条文本一共分为divideNuber页。 现在想取得 分页时那条文本的索引并将它push进一个数组内
时间: 2024-03-17 12:39:55 浏览: 46
你可以按照以下步骤实现:
1. 初始化变量:当前页数currentPage为1,当前可用区域高度availableHeight为startHeight,文本索引index为0。
2. 循环遍历文本数组strLines,每次循环时执行以下操作:
a. 计算当前文本行高:lineHeight = fontSize * 1.15;
b. 如果当前可用区域高度availableHeight减去当前文本行高lineHeight小于等于底部高度endHeight,说明当前页已经写不下该文本,将当前文本索引index加入分页数组中,并将currentPage加1,重置可用区域高度为startHeight;
c. 否则,将当前文本索引index加1,并将可用区域高度availableHeight减去当前文本行高lineHeight。
3. 循环结束后,如果最后一页还有文本未写完,将最后一个文本索引index加入分页数组中。
4. 返回分页数组。
代码示例:
```
function paginateText(strLines, fontSize, startHeight, endHeight) {
let currentPage = 1;
let availableHeight = startHeight;
let index = 0;
const divideNumber = Math.ceil(strLines.length / (startHeight - endHeight) / (fontSize * 1.15));
const pageIndices = [];
for (let i = 0; i < strLines.length; i++) {
const lineHeight = fontSize * 1.15;
if (availableHeight - lineHeight <= endHeight) {
pageIndices.push(index);
currentPage++;
availableHeight = startHeight;
} else {
index++;
availableHeight -= lineHeight;
}
}
if (index < strLines.length - 1) {
pageIndices.push(index);
}
return pageIndices;
}
```
阅读全文