Je crée une méthode de tri personnalisée dans Angular qui prend comme paramètre un nom de type string. Dans le fichier .html, chaque fois qu'un utilisateur clique sur les flèches, disons par exemple à côté de 'UserName', le ...
0
Randy Goldsmith
14 janv. 2021 à 21:49
2 réponses
Meilleure réponse
Ajoutez simplement le modificateur toLowerCase (). si un [nom] peut ne pas être une chaîne, alors un [nom] .toString (). toLowerCase ()
if(this.isAscendingOrder) {
return this.entries.sort((a, b) => {
if (a[name].toLowerCase() < b[name].toLowerCase())
return -1;
if (a[name].toLowerCase() > b[name].toLowerCase())
return 1;
return 0;
});
} else {
return this.entries.sort((a, b) => {
if (a[name].toLowerCase() < b[name].toLowerCase())
return 1;
if (a[name].toLowerCase() > b[name].toLowerCase())
return -1;
return 0;
});
}
0
IgorK
14 janv. 2021 à 20:01
Vous pouvez le rendre légèrement plus organisé comme ceci:
sortByField(name:string) {
this.isFaSort = false;
if(this.sortByParam == name) {
this.isAscendingOrder= !this.isAscendingOrder;
} else {
this.sortByParam = name;
this.isAscendingOrder = true;
}
function getLowerCaseEntry(a, b) {
return a[b].toLowerCase();
}
function compareStr(a ,b, asc) {
return asc ? a.localeCompare(b) : b.localeCompare(a);
}
this.entries.sort((x,y) => compareStr(getLowerCaseEntry(x, name), getLowerCaseEntry(y, name), this.isAscendingOrder));
}
1
Moshezauros
14 janv. 2021 à 20:06
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.