faire une fonction(ordre croissant) javascript

Par kingja, il y a 5 ans


Salut, je suis débutant dans le langage javascript. Je voudrais une personne me fasse le code pour cela et qui m'explique un peu pour après . j'ai fais un début d'archictecture de code mais je sais pas quoi mettre dans la fonction.

Cities

| Id | Population |Urban Area|Natural Area|

| 0 | 200 | 30 | 10 |
| 1 | 440 | 25 | 40 |
| 2 | 120 | 40 | 40 |
| 3 | 800 | 50 | 20 |
| 4 | 700 | 30 | 80 |

function OrderCities(cities) { } const cities = {}; let q1_result = OrderCities(cities); console.log(q1_result); // Expected output: [4, 1, 3]

Ce que je veux

Ecrire une fonction qui ordonne les 3 villes les plus densément peuplées par leur rapport zone urbaine/zone naturelle (ordre croissant).
Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

6 réponses

Balsakup, il y a 5 ans

Salut, ça fait 3 postes sur le forum où tu demandes qu'on produise du code pour toi sans même essayer, tes peut être débutant en JS, mais faut se poser des questions. Google et ses potes, moteurs de recherche, sont nos amis, MDN (Mozilla Developer Network) et un grand ami des devs fronts.

Pour chacun de tes postes sur le forum, je trouve la solution en 2 secs (vraiment 2 secs) sur Google qui me donne des résultats de StackOverflow (encore un grand ami des devs), cherche un minimum avant de poster sur le forum.

Rechercher et galérer c'est sûrement le meilleur moyen d'apprendre.

https://stackoverflow.com/questions/1129216/sort-array-of-objects-by-string-property-value

kingja, il y a 5 ans

salut, oui en effet j'ai déja fait des recherches je m'y prend peut être mal , le problème que je rencontre surtout c'est es que je fait 1 seul tableau d'array qui contient tous ses élements ou bien un plusieurs ?

Balsakup, il y a 5 ans

Voilà, avec mon ami StackOverflow et calculs basiques de mathématique

const cities = [ { id: 0, population: 200, urban_area: 30, natural_area: 10 }, { id: 1, population: 440, urban_area: 25, natural_area: 40 }, { id: 2, population: 120, urban_area: 40, natural_area: 40 }, { id: 3, population: 800, urban_area: 50, natural_area: 20 }, { id: 4, population: 700, urban_area: 30, natural_area: 80 } ]; function compare(a, b) { // Densité des habitants // Poulation / surface const aDensity = a.population / (a.urban_area + a.natural_area); const bDensity = b.population / (b.urban_area + b.natural_area); // Si la densité de a < b, alors en met a avant if (aDensity < bDensity) { return -1; } // Si la densité de a > b, alors on met a après if (aDensity > bDensity) { return 1; } // Sinon, il reste à sa place return 0; } cities.sort(compare); const top3ByDensity = cities.slice(-3);
kingja, il y a 5 ans

d'accord merci donc si j'ai bien compris la fonction compare remplacerait ? Ma fonction OrderCities qui prend en paramètre cities

Balsakup, il y a 5 ans

Désolé, j'ai pas utilisé ton template.. Voilà, tu devrais t'y retrouver

// Pas de majuscule au début, c'est moche function orderCities(cities) { cities.sort(function (a, b) { // Densité des habitants // Poulation / surface const aDensity = a.population / (a.urban_area + a.natural_area); const bDensity = b.population / (b.urban_area + b.natural_area); // Si la densité de a < b, alors en met a avant if (aDensity < bDensity) { return -1; } // Si la densité de a > b, alors on met a après if (aDensity > bDensity) { return 1; } // Sinon, il reste à sa place return 0; }); return cities.slice(-3); } const cities = [ { id: 0, population: 200, urban_area: 30, natural_area: 10 }, { id: 1, population: 440, urban_area: 25, natural_area: 40 }, { id: 2, population: 120, urban_area: 40, natural_area: 40 }, { id: 3, population: 800, urban_area: 50, natural_area: 20 }, { id: 4, population: 700, urban_area: 30, natural_area: 80 } ]; // Pas de snakecase pour les variables, c'est moche const q1Result = orderCities(cities); console.log(q1Result); // Expected output: [4, 1, 3]
kingja, il y a 5 ans

ah d'accord je savais pas pour les snakecase merci bien :)