J'essaie de sélectionner tous les éléments d'un tableau contenant le mot "Orange", indépendamment du nombre précédent.
J'ai essayé avec ce code, mais cela ne fonctionne que lorsque j'écris le nom exact de l'élément comme "02orange".
var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"]; function checkOrange(orange) { return orange == "02orange"; } var OrangeArray = DWArray.filter(checkOrange); return OrangeArray.join(", ");
Le résultat souhaité est:
["02orange", "03orange", "04orange"];
4 Réponses :
Utilisez .includes
pour vérifier si la chaîne contient de l'orange, avec filtre. Consulter
var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"]; console.log(DWArray.filter(e=>e.includes('orange')))
quand j'utilise "Inclut" j'obtiens cette erreur "orange.includes n'est pas une fonction dans
Vous trouverez peut-être la réponse ici. stackoverflow.com/questions/41820770/… < / a>
Vous pouvez renvoyer le résultat de la vérification avec String # includes
.
function checkOrange(orange) { return orange.indexOf("orange") !== -1; } var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"], OrangeArray = DWArray.filter(checkOrange); console.log(OrangeArray.join(", "));
Pour les navigateurs plus anciens, vous pouvez utiliser String # indexOf
.
function checkOrange(orange) { return orange.includes("orange"); } var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"], OrangeArray = DWArray.filter(checkOrange); console.log(OrangeArray.join(", "));
J'ai essayé Inclut mais j'ai cette erreur tout le temps "orange.includes n'est pas une fonction dans
utilisez-vous un navigateur plus ancien?
Une option serait d'utiliser Constructeur RegExp
et RegExp.prototype.test ()
avec la chaîne "orange"
passée comme premier paramètre et i
(ignorer la casse; si l'indicateur u est également activé, utilisez le pliage de casse Unicode) et les indicateurs g
(correspondance globale; trouver toutes les correspondances plutôt que de s'arrêter après la première correspondance) passés comme deuxième paramètre
p>
var DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"]; function checkOrange(orange) { return new RegExp("orange", "ig").test(orange) } var OrangeArray = DWArray.filter(checkOrange); console.log(OrangeArray, OrangeArray.join(", "));
En utilisant RegExp, j'obtiens cette erreur: "impossible de fournir des indicateurs lors de la construction d'une expression rationnelle à partir d'une autre". Est-ce que tu sais pourquoi? Je vous remercie
@Kayra Voir l'article mis à jour. Doit être une chaîne passée comme premier paramètre au constructeur RegExp
Le drapeau g
est-il vraiment utile puisque l'OP a seulement besoin de savoir si le mot contient orange
? +1 pour le drapeau i
cependant
Vous pouvez le faire avec une expression régulière et RegExp.test ()
sur une seule ligne:
const DWArray = ["apple", "apple", "02orange", "03orange", "04orange", "potato"]; const OrangeArray = DWArray.filter(s => /orange/i.test(s)).join(', '); console.log(OrangeArray);
Je vous suggère de google "chaîne javascript". Le premier hit est la documentation MDN qui contient une liste des méthodes disponibles. Parcourez cette liste et trouvez-en une qui répond à vos besoins.