gpt4 book ai didi

javascript - 简化分页页面列表的生成

转载 作者:行者123 更新时间:2023-12-02 14:36:59 24 4
gpt4 key购买 nike

我想显示一个分页器,这是我的函数,它产生我正在寻找的结果,但我认为它可以变得更简单。

想法?

const WINDOW = 2;

const func = (item, items) => {
const result = [];
const itemIdx = _.indexOf(items, item);
if (itemIdx - WINDOW > 0) {
result.push('...');
}
result.push(
_.map(itemIdx + WINDOW < items.length ?
_.take(_.dropWhile(items, p => _.indexOf(items, p) < itemIdx - WINDOW), WINDOW * 2 + 1) :
_.takeRight(_.dropRightWhile(items, p => _.indexOf(items, p) > itemIdx + WINDOW), WINDOW * 2 + 1)
)
);
if (itemIdx + WINDOW < items.length - 1) {
result.push('...');
}
return _.flatten(result);
};

const input = [1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i = 1; i < 10; i++) {
console.log(i + ': ' + func(i, input));
}

输出:

"1: 1,2,3,4,5,..."
"2: 1,2,3,4,5,..."
"3: 1,2,3,4,5,..."
"4: ...,2,3,4,5,6,..."
"5: ...,3,4,5,6,7,..."
"6: ...,4,5,6,7,8,..."
"7: ...,5,6,7,8,9"
"8: ...,5,6,7,8,9"
"9: ...,5,6,7,8,9"

最佳答案

这个怎么样

function func(item, items){
var window = 5, more = "...", //configs
nothin = [], //util
limit = items.length - window,
i = Math.max(0, Math.min(limit, items.indexOf(item) - (window>>1)));

return nothin.concat(
i > 0? more: nothin,
items.slice(i, i + window),
i < limit? more: nothin
);
}

关于javascript - 简化分页页面列表的生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37375268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com