0
Ich möchte einen Paginator anzeigen, hier ist meine Funktion, es produziert das Ergebnis, das ich suche, aber ich denke, es kann vereinfacht werden.Vereinfachen Sie die Erstellung einer Seitenliste für die Paginierung
Ideen?
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));
}
Ausgang:
"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"