这种分页滚动加载如何处理?-灵析社区

米斯达

假设 let group = [ {label:"a",count:25}, {label:"b",count:3}, {label:"c",count:4}, ] 现在有10条数据塞进来,那么这个时候结果为 let result = [ {label:"a",count:25,children:[]*10}, ] 当我再加10条数据进来,结果为 let result = [ {label:"a",count:25,children:[]*20}, ] 当我再加10条数据进来,这个时候超出了label:"a"的count(25),那么结果为 let result = [ {label:"a",count:25,children:[]*25}, {label:"b",count:25,children:[]*3}, {label:"c",count:25,children:[]*2} ] 再加2条进来 let result = [ {label:"a",count:25,children:[]*25}, {label:"b",count:25,children:[]*3}, {label:"c",count:25,children:[]*4} ]

阅读量:328

点赞量:8

问AI
这个函数 addToResult 接受两个参数:要添加的数据数组 dataArray 和要添加的数据数量 dataCount。它会将数据填充到 group 数组的 children 数组中,保证数组的长度与 count 属性相符。在填充完成后,函数将返回填充好的结果数组。 let group = [ { label: "a", count: 25 }, { label: "b", count: 3 }, { label: "c", count: 4 }, ]; function addToResult(dataArray, dataCount) { let result = JSON.parse(JSON.stringify(group)); result.forEach((item) => { item.children = []; }); let totalDataToAdd = dataCount; let index = 0; while (totalDataToAdd > 0) { if (index >= result.length) { index = 0; } let availableSpace = result[index].count - result[index].children.length; if (availableSpace > 0) { let dataToAdd = Math.min(availableSpace, totalDataToAdd); totalDataToAdd -= dataToAdd; for (let i = 0; i < dataToAdd; i++) { result[index].children.push(dataArray.shift()); } } index++; } return result; } const dataToPush = new Array(10).fill("data"); let result = addToResult(dataToPush, 10); console.log("result after pushing 10 items:", result); result = addToResult(dataToPush, 10); console.log("result after pushing another 10 items:", result); result = addToResult(dataToPush, 10); console.log("result after pushing another 10 items:", result); result = addToResult(dataToPush, 2); console.log("result after pushing another 2 items:", result);