分页逻辑记录

265 阅读1分钟

核心代码

function format(arr, current) {    const newArr = arr.map(item => {        if (item === 1 || item === arr.length || Math.abs(current - item) <= 2) {            // 第一页,最后一页,当前页的前两页和后两页,正常显示            return item;        } else {            // 其他展示为...            return false;        }    });    const beforeArr = newArr.slice(0, current);    const afterArr = newArr.slice(current);    return [...Array.from(new Set(beforeArr)), ...Array.from(new Set(afterArr))];}

逻辑描述:

正常展示的页签:第一页,最后一页,当前页,当前页的前两个,当前页的后两个。

需要展示成省略号的页签:除了正常展示的页签,当前页前面的页签统一用一个省略号代替,当前页后面的页签统一用一个省略号代替。

举例

var arr = [1,2,3,4,5,6,7,8,9,10,11,12];
var showList = format(arr, 5); // [1, false, 3, 4, 5, 6, false, 12]; false用省略号代替

var showList = format(arr, 1); // [1, 2, 3, false, 12];

var showList = format(arr, 10); // [1, false, 8, 9, 10, 11, 12]