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 }); }
3 Réponses :
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);
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.
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.
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
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?
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.