J'ai vu un exemple ci-dessus qui faisait cela correctement (en quelque sorte) et je voulais l'élargir.
Voici l'exemple.
function paginate(array, page_size, page_number) {
// les numéros de page lisibles par l'homme commencent généralement par 1, donc nous réduisons 1 dans le premier argument
return array.slice((page_number - 1) * page_size, page_number * page_size);
}
Il y a quelques choses qui ne vont pas avec cela.
1.) Si le page_number
est 0, il essaiera de définir la division de départ à -1 * page_size
ce qui renvoie un tableau vide. Donc la valeur minimale de l'attribut page_number
devrait être 1, jamais rien de moins à moins que vous ne gériez ce cas dans la fonction.
2.) L'indice de début et de fin de la division sont les mêmes. A cause de cela, vous obtenez un tableau vide. Donc la division devrait être :
return array.split(page_number * page_size, page_number * page_size + page_size)
const myArray = [1,2,3,4,5,6,7,8,9,10];
const paginateBad1 = (array, page_size, page_number) => {
return array.slice((page_number - 1) * page_size, page_number * page_size);
};
const paginateBad2 = (array, page_size, page_number) => {
return array.slice(page_number * page_size, page_number * page_size);
};
const paginateGood = (array, page_size, page_number) => {
return array.slice(page_number * page_size, page_number * page_size + page_size);
};
console.log("Bad 1", paginateBad1(myArray, 2, 0));
console.log("Bad 2", paginateBad2(myArray, 2, 1));
console.log("Good", paginateGood(myArray, 2, 1));
1 votes
Que représente
[3, 4]
par rapport à toutes les autres variables ? Il est important que vous expliquiez cela de manière explicite.2 votes
Utilisez
Array.slice
->array.slice((page_number - 1) * page_size, page_size)
(quelque chose comme ça devrait fonctionner)0 votes
@DarrenSweeney Si le tableau est divisé en "pages", nous obtiendrons 3 pages où chaque page a une taille maximale de 2 :
[1, 2]
,[3, 4]
et[5]
. Le numéro de page 2 dans ce scénario sera[3, 4]
.0 votes
shouts.dev/maniere-la-plus-simple-de-paginer-un-tableau-en-javascript