【发布时间】:2018-05-02 06:43:20
【问题描述】:
如何在没有任何第三方库的情况下使用 ES6 编写以下代码?
// sample pager array
// * output up to 11 pages
// * the current page in the middle, if page > 5
// * don't include pager < 1 or pager > lastPage
// * Expected output using example:
// [9,10,11,12,13,14,15,16,17,18,19]
const page = 14 // by example
const lastPage = 40 // by example
const pagerPages = page => {
let newArray = []
for (let i = page - 5; i <= page + 5; i++) {
i >= 1 && i <= lastPage ? newArray.push(i) : null
}
return newArray
}
我想避免使用 Array.push,可能还有 for 循环,但我不确定在这种情况下如何实现它。
【问题讨论】:
-
new Array((page + 5) - (page - 5)).fill().map((d, i) => i + (page - 5)) -
@BenM 或
Array.from({length: 10}, (d, i) => i + (page - 5)). -
@BenM 不等于
(page + 5) - (page - 5)总是等于10? -
@Mark_M 是的,确实如此。只是为了清楚起见而添加。
-
你还想过滤掉小于1和大于lastPage的数字,所以基本上:
new Array((page + 5) - (page - 5)).fill().map((d, i) => i + (page - 5)).filter(n => 1 <= n && n <= lastPage )
标签: javascript functional-programming