Bonjour à tous,
Je souhaite résoudre un problème sur l'affichage des produits sélectionnés à mettre en avant. J'ai mis en place un algoritme en Javascript permettant d'afficher des produits de façon aléatoire et par ordre croissant de prix.
Mon algorithme fonctionne très bien pour la sélection des produits de façon aléatoire. Mais par contre le trie par ordre croissant se fait une fois sur deux !
Je vous montre le code que j'ai effectué pour sélectionner de façon aléatoire puis les classer par ordre croissant de numéro d'ordre (pour les prix ou autre chose)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 //Selection aléatoire des produit function selectionProduits(nbSelections){ var nb_prod = tab_produits.length; nb_selections = nbSelections; produits_selectionnes = null; produits_selectionnes = new Array(); tab_classes = null; tab_classes = new Array(); if(nb_prod > nb_selections){ for(k=0;k<nbSelections;k++){ nb_aleatoire = Math.round((nb_prod -1)* Math.random()); if(nb_aleatoire<0) nb_aleatoire=0; while(tab_produits[nb_aleatoire].selectionne == 1){ if(nb_aleatoire < (nb_prod -1)){ nb_aleatoire++; }else{ nb_aleatoire = 0; } } produits_selectionnes[k] = tab_produits[nb_aleatoire]; tab_produits[nb_aleatoire].selectionne = 1; } for(ii = 0; ii < produits_selectionnes.length;ii++){ Min = 100000; //J'affecte le porduit avec le numéro d'ordre le plus petit possible for( jj = 0; jj < produits_selectionnes.length; jj++){ if(produits_selectionnes[jj].selectionne == 1){ if(Min > produits_selectionnes[jj].num_ordre){ Min = produits_selectionnes[jj].num_ordre; tab_classes[ii] = produits_selectionnes[jj]; } } } ///Sélection du produit avec le numéro d'ordre le plus petit for(ll = 0; ll < produits_selectionnes.length; ll++){ if(produits_selectionnes[ll].selectionne == 1){ if(produits_selectionnes[ll].idProd == tab_classes[ii].idProd){ produits_selectionnes[ll].selectionne = 2; } } } } }else{ for(k=0;k<nb_prod;k++){ produits_selectionnes[k] = tab_produits[k]; tab_produits[k].selectionne = 1; } } }
Je voudrais savoir votre avis par rapport au code que j'ai fait.
Qu'est ce qui fait que le trie par ordre croissant se fait une fois sur deux ?
Une précision, le tableau d'objets javascript tab_produits est généré par l'intermédiaire d'ajax avec un numéro d'ordre affecté à chaque objet javascript .
Cordialement.
Partager