2
votes

Utilisation illégale du typage de filtre

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.


2 commentaires

Vous n'avez pas besoin d'un filtre < / code> , à la place vous avez besoin d'un foreach .


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


4 Réponses :


0
votes

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.


0 commentaires

0
votes

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


0 commentaires

0
votes

Utilisez forEach comme ci-dessous:

inProgressIssue = [];

issuesNotCompletedInCurrentSprint.forEach(item => {
  if (item.statusId === '1') {
    openIssue.push(item);
  } else if (item.statusId === '3') {
    inProgressIssue.push(item);
  }
});


0 commentaires

0
votes

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


0 commentaires