gpt4 book ai didi

javascript - 两个方向从 n 开始的范围

转载 作者:行者123 更新时间:2023-11-28 14:07:08 26 4
gpt4 key购买 nike

给定 let n = 9,我想返回 [6, 7, 8, 9, 10, 11, 12]。我知道我可以这样写:

const up = [...Array(4).keys()].map(i => i + 9)
const down = [...Array(4).keys()].map(i => 9 - i).reverse()
const result = [...new Set([...down, ...up])]

但是如果将n更改为1我只想返回正值。如果没有一堆 if 语句,我该如何做到这一点?有没有更有效的方法来写这个?如果您不知道的话,它是用于分页器的。

最佳答案

您可以使用Array.filter()过滤掉超出最小和最大页码的值。为了方便起见,将其放入函数中:

const paginate = function(num, pages, min, max) {
const up = [...Array(pages - 1).keys()].map(i => num + i + 1).filter(i => i <= max);
const down = [...Array(pages - 1).keys()].reverse().map(i => num - i - 1).filter(i => i >= min);
return [...down, num, ...up];
}

console.log(paginate(5, 4, 1, 10));
console.log(paginate(9, 4, 1, 10));
console.log(paginate(1, 4, 1, 10));

这可以简化为:

const paginate = (num, pages, min, max) =>
[...Array(pages * 2 - 1).keys()].map(i => num + 1 - pages + i).filter(i => i <= max && i >= min);

console.log(paginate(5, 4, 1, 10));
console.log(paginate(9, 4, 1, 10));
console.log(paginate(1, 4, 1, 10));

关于javascript - 两个方向从 n 开始的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60982380/

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