Je suis nouveau sur JavaScript et j'essaye de supprimer un tableau du tableau s'il y a une lettre
Ex: [["x", "y", 2], [2, 4], [5, 3], [6, 9], ["a", 1]]
Le résultat attendu serait: [[2, 4], [5, 3], [6, 9]]
;
3 Réponses :
Dans votre cas, je pense que le problème est la boucle interne. Parce que data [i] [j]
sera "x", "y", 2,4,5 ...
et vous ne pouvez pas appliquer indexOf ( )
aux nombres pour générer une erreur.
Vous pouvez utiliser Array.prototype.every ()
à l'intérieur de Array.prototype.filter ()
var data = [["y","x",2],[2, 4],[5, 3],[6, 9]] let res = data.filter(x => x.every(x =>!isNaN(x))); console.log(res)
@Code Maniac Vous avez raison OF question ne correspond pas car 1) sa sortie attendue supprime les éléments 2) Il utilise quelque chose comme [\ p {IsLatin} \ s] +
ce qu'il n'a pas parlé de
Ouais, c'est pourquoi c'était une note d'accompagnement :) de toute façon, je nettoie simplement mes commentaires car OP a déjà fourni plus de précisions sur la question, ils ne sont donc plus pertinents
Votre code ne fonctionne pas pour deux raisons:
Vous utilisez i
au lieu de j
dans la déclaration de la boucle interne
Vous essayez de faire indexOf ()
sur un nombre
La sortie souhaitée laisse quelques incertitudes mineures, mais voici une solution utilisant Array.filter ()
et Array.every ()
.
var data = [["a","b",1,2],["y", "x"],[2, 4],[5, 3],[6, 9]]; var result = data.filter(group => group.every(item => !isNaN(item))); console.log(result);
EDIT: Code mis à jour pour répondre à ce commentaire:
s'il y a une lettre dans le premier tableau, elle sera supprimée
Merci beaucoup. Vous avez été très utile.
@jordirigau Merci, d'accord avec votre mise à jour, reduction ()
n'est pas nécessaire. J'étais en train de mettre à jour ma réponse mais j'ai vu que Maheer avait une longueur d'avance - considérez plutôt sa solution!
Pour obtenir le résultat attendu avec une seule boucle, utilisez filter et Math.max, si le tableau contient une chaîne, il renvoie NaN pour Math.max
var data = [["x","y", 2],[2, 4],[5, 3],[6, 9],["a", 1]]; console.log(data.filter(v => !isNaN(Math.max.apply(Math, v))));
codepen- https://codepen.io/nagasai/pen / zbRbob? editors = 1010
Production attendue?
Le premier tableau (maintenant vide) serait-il supprimé ou un tableau vide resterait-il dans le résultat? Veuillez inclure le résultat attendu pour votre exemple de
données
.N'utilisez jamais le même index dans les boucles
interne
etexterne
Vos deux problèmes, tels que je les vois: vous utilisez
i
là où vous avez peut-être voulu utiliserj
dans la déclaration de la boucle interne. Deuxièmement, vous ne pouvez pas faireindexOf
sur un nombre, donc vos données échoueront une fois qu'elles auront atteint le2
.Que faire si le tableau donné est
[["y", "x", 2], [2, 4], [5, 3], [6, 9]]
Aussi, qu'en est-il d'une chaîne numérique, par exemple
["4"]
? Est-ce que cela est inclus? Analysé? Filtré?@TylerRoper le tableau serait supprimé, et il n'y a pas de chaînes numériques
Et que se passerait-il si
arr = [["y", "x", 2], [2, 4], [5, 3], [6, 9]]
Désolé, s'il y a une lettre dans le premier tableau, elle serait supprimée, donc si c'est [["y", "x", 2], [2, 4], [5, 3], [6, 9]] renverrait [[2, 4], [5, 3], [6, 9]]