Javascript 如何通过其子数组对象属性计算父数组的项数
假设我有一批有很多办公室的人员Javascript 如何通过其子数组对象属性计算父数组的项数,javascript,arrays,Javascript,Arrays,假设我有一批有很多办公室的人员 var personnel = [ { id: 1, name: 'John Doe', offices: [ { id: 1, name: 'Office 1', isAssigned: false }, { id: 2, name: 'Office 2', isAssigned: true
var personnel = [
{
id: 1,
name: 'John Doe',
offices: [
{
id: 1,
name: 'Office 1',
isAssigned: false
},
{
id: 2,
name: 'Office 2',
isAssigned: true
},
{
id: 3,
name: 'Office 3',
isAssigned: false
}
]
},{
id: 2,
name: 'Jerry Smith',
offices: [
{
id: 2,
name: 'Office 2',
isAssigned: true,
},
{
id: 3,
name: 'Office 3',
isAssigned: false,
}
]
}
]
如何计算分配到特定办公室的人员数量?或者在办公室2分配了多少人?结果:2迭代分配的办公室并将计数添加到对象 这将得到每个办公室的计数 var人员=[{ id:1, 姓名:“约翰·多伊”, 办公室:[{ id:1, 名称:'办公室1', isAssigned:错 }, { id:2, 姓名:"办公室2",, 伊萨辛德:是的 }, { id:3, 名称:"三号办事处",, isAssigned:错 } ] }, { id:2, 姓名:“杰瑞·史密斯”, 办公室:[{ id:2, 姓名:"办公室2",, 伊萨辛德:是的, }, { id:3, 名称:"三号办事处",, isAssigned:错, } ] }]; 让办公室={}; 人事。forEachp=>{ p、 offices.filtero=>o.isAssigned.forEacho=>{ 办公室[o.name]=办公室[o.name]| | 0; 办公室[o.name]++; }; }; 控制台、登录处; let officeToCheck=办公室2;
控制台。登录[办公室检查] 迭代指定的办公室并将计数添加到对象 这将得到每个办公室的计数 var人员=[{ id:1, 姓名:“约翰·多伊”, 办公室:[{ id:1, 名称:'办公室1', isAssigned:错 }, { id:2, 姓名:"办公室2",, 伊萨辛德:是的 }, { id:3, 名称:"三号办事处",, isAssigned:错 } ] }, { id:2, 姓名:“杰瑞·史密斯”, 办公室:[{ id:2, 姓名:"办公室2",, 伊萨辛德:是的, }, { id:3, 名称:"三号办事处",, isAssigned:错, } ] }]; 让办公室={}; 人事。forEachp=>{ p、 offices.filtero=>o.isAssigned.forEacho=>{ 办公室[o.name]=办公室[o.name]| | 0; 办公室[o.name]++; }; }; 控制台、登录处; let officeToCheck=办公室2;
控制台。登录[办公室检查] 要获得所有办公室的总统计数字:每个办公室分配了多少员工,请使用以下方法: var Personal=[{id:1,姓名:'John Doe',办公室:[{id:1,姓名:'Office 1',isAssigned:false},{id:2,姓名:'Office 2',isAssigned:true},{id:3,姓名:'Office 3',isAssigned:false},{id:2,姓名:'Jerry Smith',办公室:[{id:2,姓名:'Office 2',isAssigned:true,},{id:3,姓名:'Office 3',isAssigned:false}] ], 计数=人员。还原功能r,o{ o、 办公室.职能i{ r[i.name]?++r[i.name]:r[i.name]=1; }; 返回r; }, {};
控制台。日志计数 要获得所有办公室的总统计数字:每个办公室分配了多少员工,请使用以下方法: var Personal=[{id:1,姓名:'John Doe',办公室:[{id:1,姓名:'Office 1',isAssigned:false},{id:2,姓名:'Office 2',isAssigned:true},{id:3,姓名:'Office 3',isAssigned:false},{id:2,姓名:'Jerry Smith',办公室:[{id:2,姓名:'Office 2',isAssigned:true,},{id:3,姓名:'Office 3',isAssigned:false}] ], 计数=人员。还原功能r,o{ o、 办公室.职能i{ r[i.name]?++r[i.name]:r[i.name]=1; }; 返回r; }, {}; 控制台。日志计数 您可以使用两个嵌套的名称并检查给定的名称 函数getCountname{ 返回人员。还原功能r,a{ 返回a.offices.reducefunction s,b{ 返回s+b.name==name; },r; }, 0; } var Personal=[{id:1,姓名:'John Doe',办事处:[{id:1,姓名:'Office 1',isAssigned:false},{id:2,姓名:'Office 2',isAssigned:true},{id:3,姓名:'Office 3',isAssigned:false}]},{id:2,姓名:'Jerry Smith',办事处:[{id:2,姓名:'Office 2',isAssigned:true},},{id:3,姓名:'Office 3',isAssigned:false}]}, 结果=getCount'Office 2'; console.logresult 您可以使用两个嵌套的名称并检查给定的名称 函数getCountname{ 返回人员。还原功能r,a{ 返回a.offices.reducefunction s,b{ 返回s+b.name==name; },r; }, 0; } var Personal=[{id:1,姓名:'John Doe',办事处:[{id:1,姓名:'Office 1',isAssigned:false},{id:2,姓名:'Office 2',isAssigned:true},{id:3,姓名:'Office 3',isAssigned:false}]},{id:2,姓名:'Jerry Smith',办事处:[{id:2,姓名:'Office 2',isAssigned:true},},{id:3,姓名:'Office 3',isAssigned:false}]}, 结果=getCount'Office 2'; console.logresult 使用和: 施工人员=[ { id:1, 姓名:“约翰·多伊”, 办公室:[ { id:1, 名称:'办公室1', isAssigned:错 }, { id:2, 姓名:"办公室2",, 伊萨辛德:是的 }, { id:3, 名称:"三号办事处",, isAssigned:错 } ] },{ id:2, 姓名:“杰瑞·史密斯”, 办公室:[ { id:2, 姓名:办公室 2', 伊萨辛德:是的, }, { id:3, 名称:"三号办事处",, isAssigned:错, } ] } ]; const office2Personnel=personal.filterpr=>p.offices.someo=>o.name===“办公室2”和&o.isAssigned; console.logoffice2 personnel.length 使用和: 施工人员=[ { id:1, 姓名:“约翰·多伊”, 办公室:[ { id:1, 名称:'办公室1', isAssigned:错 }, { id:2, 姓名:"办公室2",, 伊萨辛德:是的 }, { id:3, 名称:"三号办事处",, isAssigned:错 } ] },{ id:2, 姓名:“杰瑞·史密斯”, 办公室:[ { id:2, 姓名:"办公室2",, 伊萨辛德:是的, }, { id:3, 名称:"三号办事处",, isAssigned:错, } ] } ]; const office2Personnel=personal.filterpr=>p.offices.someo=>o.name===“办公室2”和&o.isAssigned;
console.logoffice2 personnel.length 下面是一个分解参数的版本:
personnel.filter( ({offices}) =>
offices.some( ({name, isAssigned}) => isAssigned && name === office)
).length
职能计数办公室工作人员{
return personal.filter{offices}=>
offices.some{name,isAssigned}=>isAssigned&&name==office
长
}
var人员=[
{
id:1,
姓名:“约翰·多伊”,
办公室:[
{
id:1,
名称:'办公室1',
isAssigned:错
},
{
id:2,
姓名:"办公室2",,
伊萨辛德:是的
},
{
id:3,
名称:"三号办事处",,
isAssigned:错
}
]
},{
id:2,
姓名:“杰瑞·史密斯”,
办公室:[
{
id:2,
姓名:"办公室2",,
伊萨辛德:是的,
},
{
id:3,
名称:"三号办事处",,
isAssigned:错,
}
]
}
];
变量计数=计数办公室人员“办公室2”;
console.logcount 下面是一个分解参数的版本:
personnel.filter( ({offices}) =>
offices.some( ({name, isAssigned}) => isAssigned && name === office)
).length
职能计数办公室工作人员{
return personal.filter{offices}=>
offices.some{name,isAssigned}=>isAssigned&&name==office
长
}
var人员=[
{
id:1,
姓名:“约翰·多伊”,
办公室:[
{
id:1,
名称:'办公室1',
isAssigned:错
},
{
id:2,
姓名:"办公室2",,
伊萨辛德:是的
},
{
id:3,
名称:"三号办事处",,
isAssigned:错
}
]
},{
id:2,
姓名:“杰瑞·史密斯”,
办公室:[
{
id:2,
姓名:"办公室2",,
伊萨辛德:是的,
},
{
id:3,
名称:"三号办事处",,
isAssigned:错,
}
]
}
];
变量计数=计数办公室人员“办公室2”;
console.logcount;感谢您的回复,但它不是在计算isAssigned=true的数量吗?它是在计算每个办公室isAssigned=true的数量感谢您的回复,但它不是在计算isAssigned=true的数量吗?它是在计算每个办公室isAssigned=true的数量