Je cherche dans un tableau d'objets. Si l ' élément a le code d'état 1 , je pousse vers openIssue et s'il est 3 , il pousse à inProgressIssue .
Voici mon code:
openIssue = [];
inProgressIssue = [];
issuesNotCompletedInCurrentSprint.filter((item) => {
if (item.statusId === '1') {
openIssue.push(item);
} else if (item.statusId === '3') {
inProgressIssue.push(item);
}
});
J'ai reçu un commentaire de révision de code:
Utilisation illégale du filtre
Veuillez me dire ce que je fais de mal ici.
4 Réponses :
Vous obtenez une erreur car la méthode de filtrage attend de vous que vous retourniez une valeur booléenne. Vous devez utiliser la méthode forEach dans ce cas.
Vous avez cette erreur parce que le filtre attend que vous retourniez un booléen, le filtre le fait toujours. Oui, le filtre est une itération mais les valeurs de retour doivent être booléennes, c'est ainsi qu'il est fait, Je vous conseille d'utiliser le filtre comme celui-ci qui est très simple. vous pouvez également utiliser foreach , qui ne devrait rien renvoyer.
let issuesNotCompletedInCurrentSprint = [{
statusId: '1',
name: 'asfadsf'
}, {
statusId: '2',
name: 'asfadsf11'
}, {
statusId: '3',
name: 'asfadsf6636'
}];
let openIssue = [];
let inProgressIssue = []
openIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '1');
inProgressIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '3');
console.log('open', openIssue, 'inprogress', inProgressIssue) ici filter renverra le statusid et renverra les valeurs ajustées
openIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '1'); inProgressIssue = issuesNotCompletedInCurrentSprint.filter(a => a.statusId === '3');
Utilisez forEach comme ci-dessous:
inProgressIssue = [];
issuesNotCompletedInCurrentSprint.forEach(item => {
if (item.statusId === '1') {
openIssue.push(item);
} else if (item.statusId === '3') {
inProgressIssue.push(item);
}
});
Le filtre doit retourner un booléen car il demande une condition sur laquelle filtrer. Cela crée également un nouveau tableau.
Vous pouvez simplement réécrire comme ceci pour utiliser le filtre:
openIssue = issuesNotCompletedInCurrentSprint.filter(item => item.statusId === '1'); inProgressIssue = issuesNotCompletedInCurrentSprint.filter(item => item.statusId === '3');
Vous n'avez pas besoin d'un
filtre < / code>, à la place vous avez besoin d'unforeach.un filtre attend une valeur renvoyée. avec la méthode .forEach, vous parcourez le tableau et pouvez faire ce que vous voulez avec chaque valeur