0
ページャーを表示したい、ここに自分の関数があり、それは私が探している結果を生成しますが、単純化できると思います。ページネーション用のページリストの生成を簡略化
アイデア?
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"