Maison > interface Web > js tutoriel > le corps du texte

Question amusante JavaScript : Club de perte de poids

黄舟
Libérer: 2017-02-04 15:24:24
original
1134 Les gens l'ont consulté

Mon ami Xiao Wang et moi sommes tous deux membres du "Weight Loss Fitness Club".

Xiao Wang a toujours eu l'air inquiet ces derniers temps, car une liste de poids de tous les membres est publiée ces jours-là chaque mois, et il est toujours le plus gros sans exception.

Je faisais aussi partie de la liste, alors je lui ai dit : "Ne t'inquiète pas, mon ami, je vais t'aider à changer l'ordre de la liste."

Après réflexion, j'ai pensé qu'il serait préférable de les ranger dans cet ordre : chaque numéro de poids est classé selon la somme de chaque chiffre, du plus petit au plus grand.

Par exemple, 99kg, la somme de ses chiffres est 18, ce qui signifie que le "poids" est 18.

Pour un autre exemple, 100 kg ont un poids de 1, donc ils se classent avant 99 kg.

La tâche est la suivante :

Étant donné une série de listes de membres de clubs de perte de poids, pouvez-vous la trier par poids et la retourner ?

Exemple :

"56 65 74 100 99 68 86 180 90"  => "100 180 90 56 65 74 68 86 99"
Copier après la connexion

Lorsque deux nombres ont le même poids, comme 180 et 90, alors 180 vient en premier. À ce moment-là, nous suivons l'ordre du dictionnaire.


Tous les chiffres sont positifs, la liste est peut-être vide.

Pour être honnête, quand j'ai vu cette question, j'étais un peu en sueur~ Après tout, je suis aussi un gros homme.

Il n'est évidemment pas pratique d'opérer directement des chaînes, alors divisons-les en tableaux !

Triez ensuite le tableau, les règles sont les suivantes :

1. Le poids est prioritaire, plus le poids est petit, plus le classement est élevé.

2. Lorsque les poids sont les mêmes, disposez-les dans l'ordre du dictionnaire.

Pour calculer le poids, c'est-à-dire pour calculer la somme de chaque chiffre, vous avez besoin de cette méthode :

function eachDigitSum(num){  
    var sum = 0;  
    num = num - 0;  
    while(num > 0){  
        sum += num % 10;  
        num = parseInt(num / 10);  
    }  
    return sum;  
}
Copier après la connexion

Ensuite, pour comparer l'ordre lexicographique, vous avez besoin de cette méthode :

function compareASCII(a,b){  
    var i=0;  
    while(true){  
        var c1 = a.charCodeAt(i);  
        var c2 = b.charCodeAt(i);  
        if(!c1){  
            return -1;  
        }  
        if(!c2){  
            return 1;  
        }  
        if(c1 < c2){  
            return -1;  
        }  
        if(c1 > c2){  
            return 1;  
        }  
        i++;  
    }  
}
Copier après la connexion

En fait, cette méthode a une alternative en JS natif :

String.prototype.localeCompare
Copier après la connexion

C'est par défaut l'ordre du dictionnaire.


Enfin, intégrez, triez et agrégez simplement en chaînes.

function orderWeight(str) {  
    return str.split(" ").sort(function(a,b){  
        var n1 = eachDigitSum(a);  
        var n2 = eachDigitSum(b);  
        if(n1 > n2){  
            return 1;  
        }  
        else if(n1 < n2){  
            return -1;  
        }  
        else{  
            return compareASCII(a,b);  
        }  
    }).join(" ");  
}
Copier après la connexion

Ce qui précède est le contenu de Questions intéressantes JavaScript : Club de perte de poids. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!