如何在react js中显示基于两个或多个条件的元素总数



我试图根据两个条件显示参与者的总数:有"Pocu":"Da";以及";Nume":"Contabilitate";从嵌套数组下面。

let popular = JSON.parse(`[
{
"id": "15f806ec-79cf-498f-8a4d-8bc8fdf8c43e",
"Nume": "negrea",
"Prenume": "ioana",
"Pocu": "Da",
"createdAt": "2022-04-27T13:17:05.000Z",
"updatedAt": "2022-04-27T13:17:05.000Z",
"deletedAt": null,
"INDICATORI": [
{
"id": "068170b3-7995-41df-8fac-4f2bc577e2c6",
"Nume": "4S110",
"importHash": null         
}
],
"Cursuri": [
{
"id": "068170b3-7995-41df-8fac-4f2bc577e2c6",
"Nume": "Contabilitate",
"importHash": null
}
]
}
]`);

const count = popular.reduce((total, participant) => total + Math.min (participant.Cursuri
.filter(indicator => indicator.Nume === "Contabilitate").length, popular
.filter(indicator => indicator.Pocu === "Da").length), 0)
console.log(count);

输出是:85应该是20

感谢您的帮助,

请尝试

const count = popular.filter(item => item.Pocu === "Da" && item.Cursuri.filter(c => c.Nume === "Contabilitate").length > 0).length;
console.log(count);

输出1个

当在嵌套的Cursuri数组中搜索时,我们在下面这样做

if (item.Cursuri.filter(c => c.Nume === "Contabilitate").length > 0) {
}

或者你可以在下面这样做

if (item.Cursuri.some(c => c.Nume === "Contabilitate")) {
}

Fiddle

在这里,您可以使用filter将那些项放入满足这两个条件的数组中,然后对数组中的项进行计数。

const count = popular.filter(item =>  item.Pocu === "Da" && item.Nume === "Contabilitate").length

您可以简单地通过在Object.keys()和Array.forEach()方法的帮助下迭代子对象来实现它。

实时演示

let popular = JSON.parse(`[
{
"id": "15f806ec-79cf-498f-8a4d-8bc8fdf8c43e",
"Nume": "negrea",
"Prenume": "ioana",
"Pocu": "Da",
"createdAt": "2022-04-27T13:17:05.000Z",
"updatedAt": "2022-04-27T13:17:05.000Z",
"deletedAt": null,
"INDICATORI": [
{
"id": "068170b3-7995-41df-8fac-4f2bc577e2c6",
"Nume": "4S110",
"importHash": null         
}
],
"Cursuri": [{
"id": "068170b3-7995-41df-8fac-4f2bc577e2c6",
"Nume": "Contabilitate",
"importHash": null
}]
}]`);

let count = 0;
popular.forEach(obj => {
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object' && obj[key] !== null) {
obj[key].forEach(participant => {
if (obj.Pocu === 'Da' && participant.Nume === 'Contabilitate') {
count++;
}
})
}
});
});
console.log(count);