2017-09-29 3 views
-1

J'ai une chaîne comme ceci (c'est un résultat que j'ai obtenu d'une API de repos, mais ce n'est pas un tableau Json, il est une chaîne):Comment retourner le plus haut si on lui donne une chaîne avec un nom et une valeur mais pas un dictionnaire json en utilisant javascript

[Alex:1, Rose:12, Howdie:72, Lina:1, Emily:1, Pac:15, Virus:1, Love:18, Brie:11] 

maintenant, ce que je dois est de retourner le nom avec la valeur la plus élevée (dans cet exemple ce serait le nom Howdie). Je pense à construire une fonction pour chercher le plus grand nombre et retourner ce nom. Cependant, je ne suis pas sûr s'il y a un moyen de le faire avec JavaScript.

+3

Ce tableau n'est pas valide, et s'il s'agit d'une chaîne, il ne vaut rien et vous devrez créer votre propre analyseur – adeneo

+0

Pourquoi n'y aurait-il pas un moyen? S'il vous plaît essayez de l'implémenter au lieu de demander une solution complète, ce n'est pas ce à quoi ce site est destiné. –

Répondre

0

Si son une chaîne comme ceci:

const input = "[Alex:1, Rose:12, Howdie:72, Lina:1, Emily:1, Pac:15, Virus:1, Love:18, Brie:11]"; 

Nous devons tout d'abord l'importer dans un tableau de validité:

const parsed = input 
     .replace("[","") 
     .replace("]","") 
     .split(", ") //get key value pairs 
     .map(pair => pair.split(":"));//get 2d array 

Alors maintenant, nous pourrions trier les analysables après la valeur descendante:

parsed.sort(([nameA,valueA], [nameB,valueB]) => 
    valueB - valueA 
); 

Pour obtenir le plus grand (le premier):

const result = parsed[0]; 
//key and value: 
const key = result[0], value = result[1]; 

//OR both at once 

const [key,value] = parsed[0]; 

le code supérieur est ES6, vous pouvez utiliser var au lieu de const et une fonction régulière au lieu de => si vous voulez soutenir les anciens navigateurs

Si vous ne pensez que le code supérieur fonctionne, cliquez sur here;)