JavaScript Redux 分页函数返回时嵌套数组丢失,不返回则正常是什么原因?
问题原因
- 核心问题出在分页函数的边界值返回逻辑和预期结构不统一:
你当前的判断条件为arr.length < mr(mr取值为4)时,直接返回原一维数组,而长度>=4时返回嵌套子数组结构。当传入数组长度小于4时,返回值没有嵌套外层数组,你按嵌套结构读取数据时就会出现“嵌套数组丢失”的现象。 - 补充说明:你注释
return results时看到的正确结果是函数内部console.log(results)的输出,此时函数没有显式返回值,外部接收的list实际为undefined,和你取消注释后的逻辑表现完全不同。
修复方案
调整边界值返回逻辑,保证不管数组长度多少,都返回统一的嵌套子数组结构,同时可以简化冗余的pn变量,优化后代码如下:
const paginate = (arr) => { const mr = 4; const results = [] const maxPages = Math.ceil(arr.length/mr) for(let i = 0; i < maxPages; i++){ results.push(arr.slice(mr*i, mr*i + mr)) } return results }
修改后不管数组长度是多少,都会返回符合要求的嵌套结构:
- 长度为3时返回
[[a,b,c]] - 长度为10时返回
[[a,b,c,d], [e,f,g,h], [i,j]]
内容的提问来源于stack exchange,提问作者Juan-Rivera
相关产品推荐
相关产品推荐

