2
votes

Javascript: Filtrer les pièces des éléments dans Array

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"];


1 commentaires

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.


4 Réponses :


0
votes

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')))


2 commentaires

quand j'utilise "Inclut" j'obtiens cette erreur "orange.includes n'est pas une fonction dans ", c'est pourquoi j'ai utilisé le filtre à la place. Est-ce que tu sais pourquoi? Je vous remercie


Vous trouverez peut-être la réponse ici. stackoverflow.com/questions/41820770/… < / a>



2
votes

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(", "));


2 commentaires

J'ai essayé Inclut mais j'ai cette erreur tout le temps "orange.includes n'est pas une fonction dans ", c'est pourquoi j'ai utilisé le filtre à la place


utilisez-vous un navigateur plus ancien?



2
votes

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(", "));


3 commentaires

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



0
votes

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);


0 commentaires