0
votes

Incrément de 1 lorsque vous utilisez .MAP et une condition s'évaluent vers true

im ayant un temps difficile incrémentant par 1 lorsque j'utilise .map code> pour boucle via le tableau myClasses code> et lorsque Statut code> dans le tableau est égal à «ouvrir» ou «en cours» incrément un nombre par 1. Mon objectif est d'avoir le nombre total de classes qui sont «ouvertes» ou «en cours»

c'est ce que je fais actuellement fort> p> xxx pré>

Actuellement, lorsqu'une classe est ouverte ou en cours, je viens de produire un oui code> ou non code> mais je Voulez-vous pouvoir ajouter une variable de 1 ou 0 à une variable numérique. P>

C'est ce que MyClasses Array contient fort> P>

0: {id: "0000AK",  type: "Elective", status: "Open"       } 
1: {id: "597WUK",  type: "Core",     status: "Closed"     } 
2: {id: "082HCE",  type: "Core",     status: "In Progress"} 
3: {id: "091HSN",  type: "Elective", status: "Canceled"   } 
4: {id: "038GAQ",  type: "Core",     status: "Open"       } 


4 commentaires

('Ouvrir' || 'En cours') Evaluer toujours à "Ouvrir" car c'est une valeur de vérité. Vous devez utiliser si (["Ouvrir", "En cours"]. Comprend (A.Status)) .


Votre condition a.status === ('Open' || 'en cours') est faux. Réécrivez comme (A.Status === 'Open' || A.Status === 'En cours')


Pourquoi avez-vous besoin de prendre une carte, si vous aimez avoir une valeur unique?


En plus de la modification de la comparaison selon laquelle d'autres suggéraient, vous devez également utiliser filtre () au lieu de mappe () ici. Ensuite, le nombre n'est que de la longueur de la matrice résultante. Sinon, vous pouvez utiliser réduire () pour résumer un compteur.


4 Réponses :


2
votes

Vous pouvez prendre le comptage dans la vraie partie du ternaire.

p>

var myClasses = [{ id: "0000AK", type: "Elective", status: "Open" }, { id: "597WUK", type: "Core", status: "Closed" }, { id: "082HCE", type: "Core", status: "In Progress" }, { id: "091HSN", type: "Elective", status: "Canceled" }, { id: "038GAQ", type: "Core", status: "Open" }],
    wanted = ['Open', 'In Progress'],
    count = myClasses.reduce((c, { status }) => c + wanted.includes(status), 0);

 console.log(count);


0 commentaires

3
votes

Si c'est juste le compte, vous pouvez simplement utiliser filtre code> et obtenez la longueur code> de la matrice renvoyée

p>

const myClasses = [{id:"0000AK",type:"Elective",status:"Open"},{id:"597WUK",type:"Core",status:"Closed"},{id:"082HCE",type:"Core",status:"In Progress"},{id:"091HSN",type:"Elective",status:"Canceled"},{id:"038GAQ",type:"Core",status:"Open"}];

const count = myClasses.filter(a => a.status === 'Open' || a.status === 'In Progress').length

console.log(count)


0 commentaires

0
votes

Je suggère que vous utilisiez réduire () au lieu de mappe () : xxx

notez comment j'ai aussi modifié la condition Dans l'instruction si pour comparer à chacune des deux valeurs que vous souhaitez.


0 commentaires

1
votes

Qu'en est-il? Tableau Réduisez

const data = [
  { id: '0000AK', type: 'Elective', status: 'Open' },
  { id: '597WUK', type: 'Core', status: 'Closed' },
  { id: '082HCE', type: 'Core', status: 'In Progress' },
  { id: '091HSN', type: 'Elective', status: 'Canceled' },
  { id: '038GAQ', type: 'Core', status: 'Open' }
];

const res = data.reduce((acc, cur) => {
  const status = cur.status;
  if (status === 'Open' || status === 'In Progress') {
    return acc + 1;
  }
  return acc;
}, 0);
console.log(res);


0 commentaires