J'ai vu un exemple ci-dessus qui faisait cela correctement (en quelque sorte) et je voulais le développer.
C'était l'exemple.
function paginate(array, page_size, page_number) {
// human-readable page numbers usually start with 1, so we reduce 1 in the first argument
return array.slice((page_number - 1) * page_size, page_number * page_size);
}
Il y a plusieurs choses qui ne vont pas dans ce sens.
1.) Si le page_number
est égal à 0, alors il essaiera de fixer la division de départ à -1 * page_size
qui renvoie un tableau vide. Ainsi, la valeur minimale de la page_number
attr doit être 1, jamais moins, sauf si vous gérez ce cas dans la fonction.
2.) L'indice de départ et l'indice d'arrivée de la division sont les mêmes. Pour cette raison, vous obtenez un tableau vide. Donc la séparation 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
Qu'est-ce que
[3, 4]
représente par rapport à toutes les autres variables ? C'est important que vous expliquiez cela explicitement.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 est de taille 2 au maximum :
[1, 2]
,[3, 4]
et[5]
. La page numéro 2 dans ce scénario sera[3, 4]
.