1
votes

Faire correspondre un tableau mélangé avec du texte et des nombres

Je trie un tableau mélangé avec des nombres et une chaîne dans l'ordre, je veux renvoyer le tableau en ignorant la seule chaîne de texte qu'il contient. ceci est mon code.

function mySort(my_sort) {
return my_sort.sort(
  function(a, b){
    return a-b
  });
}


6 commentaires

Pouvez-vous s'il vous plaît donner un exemple de tableau et la sortie attendue?


ajoutez l'exemple de tableau de ce dont vous parlez


let my_sort = [90, 45, 66, 'bye', 100,5];


Quelle est la production attendue?


Désolé pour une que incomplète. Ma sortie attendue doit renvoyer `` `` [90, 45, 66, 100,5]; `` ``


Ce n'est pas une sorte, c'est un filtre.


3 Réponses :


0
votes

Si vous souhaitez supprimer la chaîne, vous pouvez effectuer un filtre et utilisez isNaN pour vérifier si l'élément est un nombre ou non

function mySort(my_sort) {
  return my_sort.filter(n => !isNaN(parseFloat(n)) && isFinite(n))
}

let result = mySort([90, 45, 66, 'bye', 100.5]);

console.log(result);

Si vous ne voulez pas trier les nombres, vous pouvez simplement filter.

function mySort(my_sort) {
  return my_sort.filter(n => !isNaN(parseFloat(n)) && isFinite(n))
    .sort((a, b) => a - b);
}

let result = mySort([90, 45, 66, 'bye', 100.5]);

console.log(result);


2 commentaires

Number et isNaN dans les deux sens auront des problèmes. Les deux passeront des chaînes comme '2' . Deuxièmement, filter (Number); supprimera 0 du tableau qui est un nombre. Troisièmement, isNaN transmettra la chaîne vide ''


Vrai. J'ai mis à jour la réponse. Mais je pense que "2" devrait être accepté. Je ne pense pas qu'à cause de l'événement, il s'agit toujours d'un nombre techniquement.



3
votes

Vous pouvez d'abord utiliser filter () et typeof pour supprimer toutes les variables dont le type n'est pas un nombre. Je ne pense pas que vous ayez besoin de sort().

let my_sort = [90, 45, 66, 'bye', 100.5] ;
const res = my_sort.filter(x => typeof x === "number")

console.log(res)

Note : Dans la question, vous utilisez le tri directement sur l'argument qui modifiera le tableau d'origine. Chaque fois que vous souhaitez renvoyer un nouveau tableau trié, assurez-vous de le copier.


0 commentaires

1
votes

Vous pouvez faire avec motif regex / [az] / ig .if nombre est un format de chaîne qui signifie entre guillemets '90' son également nombre.Il supprime uniquement contiennent des alphabets

Mis à jour: avec un tri impair

var remove = (my_sort) => my_sort.filter(a =>  !(/[a-z]/ig.test(a))).sort((a,b)=> (parseFloat(b)%2)-(parseFloat(a)%2))

console.log(remove(['90', 45, 66, 'bye', 100.5])) //number with quotes
console.log(remove(['90t', 45, 66, 'bye', 100.5])) //number contain string

console.log(remove(['6', 5, 6, '1', 100.5])) //odd sort


3 commentaires

Votre code passera des chaînes contenant des symboles. Peut être utilisé / [^ 0-9] / ig


Non, @ MaheerAli voir le dernier argument 100.5 est également affecté.Et combiner avec le symbole maximum impossible


Je suis de retour avec une clarification supplémentaire; Que faire si je veux trier mon tableau de tri de telle sorte que les nombres impairs viennent en premier et les nombres pairs en dernier?