我试图根据两个条件显示参与者的总数:有"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);