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的数量