当前位置: 首页 > 知识库问答 >
问题:

javascript - 这种分页滚动加载如何处理?

汪栋
2023-09-21
  假设 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}  ]

共有2个答案

陶宏浚
2023-09-21
var group = [    {label:"a",count:25},    {label:"b",count:3},    {label:"c",count:4},];// 实现函数function addItemInGroup (group, data) {    data = [...data];    group.some(v => {        v.children = v.children || [];        if (v.children.length >= v.count) {            return;        }        let setData = data.splice(0, v.count - v.children.length);        v.children.push(...setData);        return !data.length;    });}// 仿真模拟let result = [1,2,3,4,5,6,7,8,9,10];let cloneDeep = (v) => JSON.parse(JSON.stringify(v));addItemInGroup(group, result);console.log("result after pushing 10 items:", cloneDeep(group));addItemInGroup(group, result);console.log("result after pushing another 10 items:", cloneDeep(group));addItemInGroup(group, result);console.log("result after pushing another 10 items:", cloneDeep(group));addItemInGroup(group, [1,2]);console.log("result after pushing another 2 items:", cloneDeep(group));
姚德容
2023-09-21

这个函数 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);
 类似资料:
  • 我知道这不是一个非常精确的问题,但我不知道从哪里开始,我有一个例子是客观设计,但我找不到任何解决方案和/或文档来帮助我做这种类型的布局。 更具体地说,这是我想做的滚动效果,http://modern8.com/d5-process/ 需要注意的是,我已经尝试过FullPageJS并且我还没有能够重新创建它,如果你可以看到它的效果包括应用固定的和相对的位置根据卷轴,但是正如我所指出的,我不知道从哪里

  • 问题内容: 用户滚动网页时如何加载内容。如何实现呢? 问题答案: 一般来说,您将需要具有这样的结构 然后,您需要检测何时接近页面末尾,并获取更多数据 您可能需要保留一个名为JavaScript之类的javascript变量,该变量存储最后显示的ID,并将其传递给AJAX接收器,以便它知道要返回的新内容。然后,您可以在AJAX中致电

  • 页面滚动到这里的时候,图片固定不动,滚动条可以继续滚动。 缤瑞COOL官网 非常感谢!!

  • 定义 滚动加载组件,可选方向(向上滚动、向下滚动)。 图片展示 代码演示 import InfiniteLoader from 'pile/dist/components/infiniteloader' import PermissionsCard from 'pile/dist/components/permissionsCard' const _Ringloading = React.cre

  • webview不支持这种写法怎么处理?

  • 本文向大家介绍基于JavaScript实现表格滚动分页,包括了基于JavaScript实现表格滚动分页的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现表格滚动分页展示的具体代码,供大家参考,具体内容如下 CSS: JS: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。