8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un fichier JSON que j'aimerais trier avec un tri à bulle. Je push toutes les dates de tous mes objets dans un tableau, qui ensuite est trié. Cependant, je n'arrive pas à relier les informations qui correspondent à la date en question. Je suis donc bloqué.

Ma fonction de tri :

function sort(tab){
    var changed;
    do{
        changed = false;
        for(var i=0; i < tab.length-1; i++) {
            if(tab[i] > tab[i+1]) {
                var tmp = tab[i];
                tab[i] = tab[i+1];
                tab[i+1] = tmp;
                changed = true;
            }
        }
    } while(changed);
}


Mes objets :

{"id":"287947","title":"Shazam!","release_date":1553299200},
{"id":"299537","title":"Captain Marvel","release_date":1551830400},
{"id":"522681","title":"Escape Room","release_date":1546473600},
{"id":"166428","title":"How to Train Your Dragon: The Hidden World","release_date":1546473600},
{"id":"450465","title":"Glass","release_date":1547596800}

Modifié par heraclys (18 Jan 2021 - 19:28)
Modérateur
Bonjour,

Il faut modifie légèrement la fonction sort() pour que le tri se fasse sur la propriété "release_date" de chaque objet.

Par exemple :
var a =
[{"id":"287947","title":"Shazam!","release_date":1553299200},
{"id":"299537","title":"Captain Marvel","release_date":1551830400},
{"id":"522681","title":"Escape Room","release_date":1546473600},
{"id":"166428","title":"How to Train Your Dragon: The Hidden World","release_date":1546473600},
{"id":"450465","title":"Glass","release_date":1547596800}];

function sort(tab){
    var changed;
    do{
        changed = false;
        for(var i=0; i < tab.length-1; i++) {
            if(tab[i].release_date > tab[i+1].release_date) {
                var tmp = tab[i];
                tab[i] = tab[i+1];
                tab[i+1] = tmp;
                changed = true;
            }
        }
    } while(changed);
}

sort(a);
console.log(a);

Amicalement,
Meilleure solution