code.js tri.js : : enregistrement initial
This commit is contained in:
parent
a2ab8bd9ea
commit
d3361281cd
2 changed files with 531 additions and 0 deletions
230
tri.js
Normal file
230
tri.js
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
// trier par nom puis par numéro
|
||||
function trierNoms(tnoms, tnumeros, croissant = true)
|
||||
{
|
||||
let tab = [];
|
||||
for (let i = 0; i < tnoms.length; ++i)
|
||||
{
|
||||
let o = Object();
|
||||
o.nom = tnoms[i];
|
||||
o.numero = tnumeros[i];
|
||||
tab.push(o);
|
||||
}
|
||||
|
||||
tab.sort((a, b) => {
|
||||
if (! croissant) { [a, b] = [b, a]; }
|
||||
let comp = a.nom.localeCompare(b.nom);
|
||||
if (comp == 0) { comp = a.numero - b.numero; }
|
||||
return comp;
|
||||
});
|
||||
return tab;
|
||||
}
|
||||
|
||||
// extraire le tableau des noms d'un tableau d'objets trié
|
||||
function extraireNoms(tab)
|
||||
{
|
||||
let noms = [];
|
||||
tab.forEach((e) => {
|
||||
noms.push(e.nom);
|
||||
});
|
||||
return noms;
|
||||
}
|
||||
|
||||
// afficher un tableau
|
||||
function afficher(msg, tab)
|
||||
{
|
||||
console.log("\n" + msg);
|
||||
for (let i = 0; i < tab.length; ++i)
|
||||
{
|
||||
console.log(tab[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// trier par ville puis par numéro
|
||||
// ville (dé)croissant, numéro (dé)croissant
|
||||
// ville vide en fin(début), numéro (dé)croissant
|
||||
function trierVilles(tvilles, tnumeros, croissant = true)
|
||||
{
|
||||
let tab = [];
|
||||
for (let i = 0; i < tvilles.length; ++i)
|
||||
{
|
||||
let o = Object();
|
||||
o.ville = tvilles[i];
|
||||
o.numero = tnumeros[i];
|
||||
tab.push(o);
|
||||
}
|
||||
|
||||
tab.sort((a, b) => {
|
||||
if (! croissant) { [a, b] = [b, a]; }
|
||||
|
||||
// une ville au moins vide ?
|
||||
if (a.ville == "" && b.ville == "") { return a.numero - b.numero; }
|
||||
if (a.ville == "") { return 1; }
|
||||
if (b.ville == "") { return -1;}
|
||||
|
||||
// deux villes non vides
|
||||
let comp = a.ville.localeCompare(b.ville);
|
||||
if (comp == 0) { comp = a.numero - b.numero; }
|
||||
return comp;
|
||||
});
|
||||
return tab;
|
||||
}
|
||||
|
||||
// extraire le tableau des villes d'un tableau d'objets trié
|
||||
function extraireVilles(tab)
|
||||
{
|
||||
let villes = [];
|
||||
tab.forEach((e) => {
|
||||
villes.push(e.ville);
|
||||
});
|
||||
return villes;
|
||||
}
|
||||
|
||||
// trier les membres selon le parent
|
||||
// - parent (dé)croissant, nom membre (dé)croissant, numéro (dé)croissant
|
||||
// - parent vide à la fin, nom membre (dé)croissant, numéro (dé)croissant
|
||||
function trierParents(tparents, tnoms, tnumeros, croissant = true)
|
||||
{
|
||||
let tab = [];
|
||||
for (let i = 0; i < tnumeros.length; ++i) {
|
||||
let o = Object();
|
||||
o.numero = tnumeros[i];
|
||||
o.nom = tnoms[i];
|
||||
o.parent = tparents[i];
|
||||
tab.push(o);
|
||||
}
|
||||
tab.sort((a, b) => {
|
||||
ordre = croissant ? 1 : -1;
|
||||
|
||||
// un parent au moins est vide ?
|
||||
if (a.parent == "" && b.parent == "") {
|
||||
let comp = a.nom.localeCompare(b.nom);
|
||||
if (comp == 0) { comp = a.numero - b.numero; }
|
||||
return comp * ordre;
|
||||
}
|
||||
if (a.parent == "") { return 1; }
|
||||
if (b.parent == "") { return -1; }
|
||||
|
||||
// deux parents non vides
|
||||
let comp = a.parent.localeCompare(b.parent);
|
||||
if (comp == 0) { comp = a.nom.localeCompare(b.nom); }
|
||||
if (comp == 0) { comp = a.numero - b.numero; }
|
||||
return comp * ordre;
|
||||
});
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
// trier les membres selon la colonne responsable
|
||||
// - non vide au début, nom membre (dé)croissant, numéro (dé)croissant
|
||||
// - vide à la fin, nom membre (dé)croissant, numéro (dé)croissant
|
||||
function trierResp(tresp, tnoms, tnumeros, croissant = true)
|
||||
{
|
||||
let tab = [];
|
||||
for (let i = 0; i < tnumeros.length; ++i) {
|
||||
let o = Object();
|
||||
o.numero = tnumeros[i];
|
||||
o.nom = tnoms[i];
|
||||
o.resp = tresp[i];
|
||||
tab.push(o);
|
||||
}
|
||||
tab.sort((a, b) => {
|
||||
ordre = croissant ? 1 : -1;
|
||||
|
||||
// un resp au moins est vide ?
|
||||
if (a.resp == "" && b.resp == "") {
|
||||
let comp = a.nom.localeCompare(b.nom);
|
||||
if (comp == 0) { comp = a.numero - b.numero; }
|
||||
return comp * ordre;
|
||||
}
|
||||
if (a.resp == "") { return 1; }
|
||||
if (b.resp == "") { return -1; }
|
||||
|
||||
// deux resp non vides
|
||||
let comp = a.resp.localeCompare(b.resp);
|
||||
if (comp == 0) { comp = a.nom.localeCompare(b.nom); }
|
||||
if (comp == 0) { comp = a.numero - b.numero; }
|
||||
return comp * ordre;
|
||||
});
|
||||
|
||||
return tab;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// les données et les tests
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
const tnumeros = [
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 110,
|
||||
111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
|
||||
121, 122, 123
|
||||
];
|
||||
|
||||
const tnoms = [
|
||||
"Lambert Paul", "Sjqeaz Njguqô", "Gfjkms Ôfyike", "Xnunèp Tmhàxz", "Xhràèk Ùmunyv",
|
||||
"Jgévxù Wohyrv", "Mèkixt Ùyimtd", "Zhamberlain Luuc", "Ézhaée Ùùpwab", "Éàkhhô Psyauà",
|
||||
"Lambert Paul", "Zphjéà Irôezqé", "Mpùuky Blégmmz", "Htôtkl Sxgtrô", "Kcfyè Nsvmvq",
|
||||
"Hdzcpèn Rddpdafx", "Èàrgkx Idèpoù", "Rhocry Dlùvwpq", "Ziùcwe Hpqltrs", "Brkcàg Nigcyi",
|
||||
"Jtinjôù Wmwiônj", "Cylsx Nzoèwl", "Éxiqnh Fcbwizà"
|
||||
];
|
||||
|
||||
const tvilles = [
|
||||
"", "Erawvcyfézgrfoi", "Jbqmqeyemdbstcf", "Ùhkfwuvgpcuèùqa", "Yécewxefmepôàeé",
|
||||
"La Havane", "Fyàwxsbedwanxqt", "", "Sipkàoféuslgiiu", "Psôhègébulaùdzm",
|
||||
"Pioùôutôeyytùlà", "", "", "", "",
|
||||
"", "", "", "La Havane", "", "", "La Havane", ""
|
||||
];
|
||||
|
||||
const parents = [
|
||||
"", "", "", "", "",
|
||||
"", "Jgévxù Wohyrv", "", "Zhamberlain Luuc", "",
|
||||
"", "", "", "Xhràèk Ùmunyv", "Xnunèp Tmhàxz",
|
||||
"", "Jgévxù Wohyrv", "", "Zhamberlain Luuc", "Gfjkms Ôfyike",
|
||||
"Sjqeaz Njguqô", "Jgévxù Wohyrv", "Sjqeaz Njguqô"
|
||||
];
|
||||
|
||||
const tresp = [
|
||||
"", "Oui", "Oui", "Oui", "Oui",
|
||||
"Oui", "", "Oui", "", "",
|
||||
"", "", "", "", "",
|
||||
"", "", "", "", "",
|
||||
"", "", ""
|
||||
];
|
||||
|
||||
// console.log("p.l = " + parents.length + ", nom.l = " + tnoms.length + ", num.l = " + tnumeros.length + ", r.l = " + resp.length);
|
||||
|
||||
// trier par nom croissant puis décroissant
|
||||
let tab_noms = trierNoms(tnoms, tnumeros);
|
||||
afficher("Tri par nom croissant :", tab_noms);
|
||||
// let tnoms_trie = extraireNoms(tab_noms);
|
||||
// afficher("Tableau de noms trié en ordre croissant", tnoms_trie);
|
||||
|
||||
tab_noms = trierNoms(tnoms, tnumeros, false);
|
||||
afficher("Tri par nom décroissant :", tab_noms);
|
||||
// tnoms_trie = extraireNoms(tab_noms);
|
||||
// afficher("Tableau de noms trié en ordre décroissant", tnoms_trie);
|
||||
|
||||
// trier par ville croissante puis décroissante
|
||||
let tab_villes = trierVilles(tvilles, tnumeros);
|
||||
afficher("Tri par ville croissant :", tab_villes);
|
||||
// let tvilles_trie = extraireVilles(tab_villes);
|
||||
// afficher("Tableau de villes trié en ordre croissant", tvilles_trie);
|
||||
|
||||
tab_villes = trierVilles(tvilles, tnumeros, false);
|
||||
afficher("Tri par ville décroissant :", tab_villes);
|
||||
// tvilles_trie = extraireVilles(tab_villes);
|
||||
// afficher("Tableau de villes trié en ordre décroissant", tvilles_trie);
|
||||
|
||||
// trier par parent croissant
|
||||
let tab_parents = trierParents(parents, tnoms, tnumeros);
|
||||
afficher("Tri par parent croissant :", tab_parents);
|
||||
|
||||
tab_parents = trierParents(parents, tnoms, tnumeros, false);
|
||||
afficher("Tri par parent décroissant :", tab_parents);
|
||||
|
||||
// trier par resp croissant
|
||||
let tab_resp = trierResp(tresp, tnoms, tnumeros);
|
||||
afficher("Tri par resp croissant :", tab_resp);
|
||||
|
||||
tab_resp = trierResp(tresp, tnoms, tnumeros, false);
|
||||
afficher("Tri par resp décroissant :", tab_resp);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue