J'utilise plusieurs cases à cocher pour filtrer la fonction de livres de livres. https://codepen.io/aksultan/pen/nwkezgg p> Il ne doit que renvoyer un seul livre, lorsque les deux cases à cocher sont utilisées, mais maintenant il renvoie toutes les données complètes. P> Merci P> P> P>
3 Réponses :
Il semble que votre filtre est incorrect.
Pour simplifier les fins, j'ai divisé en 2 filtres séquentiels, un pour chaque case: P>
computed:{
booksFilter(){
return this.books.filter(x => {
if(this.filters.options.length && this.filters.options.indexOf(0)!=-1){
return x.price>1000;
}
else{
return true;
}
}).filter(x => {
if(this.filters.options.length && this.filters.options.indexOf(1)!=-1){
return x.name == "Book1";
}
else{
return true;
}
})
}
}
Pourquoi rendre le code redondant? Voir ma réponse qui a un calcul unique.
Chaque morceau de code pourrait être redondant et peut être rendu plus compact, c'est pourquoi j'ai noté dans ma réponse que j'ai divisé le code pour simplement comprendre le problème avec la condition
Oui, mais s'il dispose de 10 cases à cocher, il utilisera des filtres enchaînant pour les enchaîner une par une. Ce qui n'est pas une bonne approche, la construction d'une clause sera la meilleure. N'est-ce pas?
Mettez à jour votre logique comme celle-ci pour obtenir le résultat: this.filters.option.indexof (0) === -1 || X.Prix> 1000 code> - Filtre 0 n'est pas sélectionné, renvoie True ou code> filtre par Price code>
et code>
this.filters.option.indexof (1) === -1 || x.name === "book1" code> - filtre 1 n'est pas sélectionné, renvoie true ou code> filtre par nom code> p> p> p> p> P> P>
Qu'en est-il de: espère que cela résoudra votre cas. p> p>
Eh bien,
this.filters.option.length code> n'est pas> 0 code> et vous retournerez donc toujoursvrai code>, gardant chaque valeur. Qu'est-ce que vous essayez exactement de filtrer?