J'ai une posList qui contient un tableau d'objets. Je veux vérifier si la valeur entrée est une correspondance exacte de tous les posCode dans chaque objet de la posList. Mon RegExp retourne true lorsqu'il s'agit d'une correspondance de recherche. Par exemple, lorsque 4325 est entré, il renvoie vrai. Je veux seulement qu'il retourne vrai si la correspondance est exacte.
//short example
posList = [
{
posCode: "43252",
description: "hi"
},
{
posCode: "HTD632",
description: "hello"
}
]
checkPosCodeUnique = () => {
const re = new RegExp(_.escapeRegExp(this.state.posCode), 'i');
const isMatch = result => (re.test(result.posCode));
const list = _.filter(this.state.posList, isMatch);
if (list.length > 0) {
error=true;
}
};
3 Réponses :
Utilisez une méthode de tableaux:
console.log (posList.some (pos => pos.posCode.toUpperCase () === this.state.posCode.toUpperCase ());
Pourquoi avez-vous besoin d'utiliser des expressions régulières?
posList = [{
posCode: "43252",
description: "hi"
},
{
posCode: "HTD632",
description: "hello"
}
]
checkPosCodeUnique = (search) => {
return posList.some(item => { return item.posCode == search });
};
console.log(checkPosCodeUnique('43252'));
console.log(checkPosCodeUnique('HTD632'));
console.log(checkPosCodeUnique(123));
Merci c'est super! J'y pensais trop!
Pour ce que vous décrivez, vous n'avez pas besoin d'expressions régulières, vous pouvez simplement filtrer la liste:
posList.filter(e => e.posCode === posCode)
Voir https://codesandbox.io/s/5w95r4zmvl pour une implémentation de votre version et celle utilisant un filtre simple.
Copie possible de Correspondance de la chaîne exacte avec JavaScript
votre liste est-elle vraiment grande (beaucoup plus grande que votre exemple) ... si c'est le cas, vous voudrez peut-être utiliser un dictionnaire de paires clé-valeur, vous obtenez donc une correspondance exacte très rapidement