im ayant un temps difficile incrémentant par 1 lorsque j'utilise Actuellement, lorsqu'une classe est ouverte ou en cours, je viens de produire un C'est ce que MyClasses Array contient fort> P> .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»
oui code> ou
non code> mais je Voulez-vous pouvoir ajouter une variable de 1 ou 0 à une variable numérique. 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 Réponses :
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);
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)
Je suggère que vous utilisiez notez comment j'ai aussi modifié la condition Dans l'instruction réduire () code> au lieu de
mappe () code>:
si code> pour comparer à chacune des deux valeurs que vous souhaitez. p> p>
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);
('Ouvrir' || 'En cours') CODE> Evaluer toujours à
"Ouvrir" CODE> car c'est une valeur de vérité. Vous devez utiliser
si (["Ouvrir", "En cours"]. Comprend (A.Status)) code>.
Votre condition
a.status === ('Open' || 'en cours') code> est faux. Réécrivez comme
(A.Status === 'Open' || A.Status === 'En cours') Code>
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 () code> au lieu de
mappe () code> ici. Ensuite, le nombre n'est que de la longueur de la matrice résultante. Sinon, vous pouvez utiliser
réduire () code> pour résumer un compteur.