2
votes

Vous voulez retourner vrai ou faux lors de la recherche d'une correspondance exacte dans un tableau d'objets?

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

};


2 commentaires

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


3 Réponses :


1
votes

Utilisez une méthode de tableaux:

console.log (posList.some (pos => pos.posCode.toUpperCase () === this.state.posCode.toUpperCase ());


0 commentaires

2
votes

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


1 commentaires

Merci c'est super! J'y pensais trop!



1
votes

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.


0 commentaires