Javascript 查找是否存在与指定条件不匹配的子阵列

Javascript 查找是否存在与指定条件不匹配的子阵列,javascript,arrays,sub-array,Javascript,Arrays,Sub Array,我有一个名为organization的数组。该数组包含组织中的单位。每个单元都是一个具有数组staff的对象。一些员工拥有A类驾驶执照(driversLicenseA) checkDriversLicense职能部门必须通过组织检查每个单位是否至少有一人持有驾驶执照。如果整个组织中有任何单位没有持有驾驶执照的员工,则必须退还该单位 organisation: [ { id: 1, title: 'Sub Org 1', staff: [ {

我有一个名为
organization
的数组。该数组包含组织中的单位。每个单元都是一个具有数组
staff
的对象。一些员工拥有A类驾驶执照(
driversLicenseA

checkDriversLicense
职能部门必须通过组织检查每个单位是否至少有一人持有驾驶执照。如果整个组织中有任何单位没有持有驾驶执照的员工,则必须退还该单位

organisation: [
  {
    id: 1,
    title: 'Sub Org 1',
    staff: [
      {
        id: 11,
        name: 'John',
        driversLicenseA: false,
      },
      {
        id: 12,
        name: 'Mike',
        driversLicenseA: true,
      },
      {
        id: 13,
        name: 'Daniel',
        driversLicenseA: false,
      }
    ]
  }
  ,
  {
    id: 2,
    title: 'Sub Org 2',
    staff: [
      {
        id: 21,
        name: 'Gustav',
        driversLicenseA: false,
      },
      {
        id: 22,
        name: 'Sandra',
        driversLicenseA: false,
      },
      {
        id: 23,
        name: 'Nikita',
        driversLicenseA: false,
      }
    ]
  },
  {
    id: 3,
    title: 'Sub Org 3',
    staff: [
      {
        id: 31,
        name: 'Carla',
        driversLicenseA: false,
      },
      {
        id: 32,
        name: 'Augustin',
        driversLicenseA: false,
      },
      {
        id: 33,
        name: 'Martin',
        driversLicenseA: false,

      }
    ]
  },
 
]

public checkDriversLicense(organisation: any[]) {
  let driversLicenseA =  organisation.find((element) => element.staff != null && element.staff?.length != 0 && element.staff?.some((item) => item.driversLicenseA == true));     
  return driversLicenseA ;

}
但是,该代码检查所有单位,如果整个组织中有一个人持有驾驶执照,则返回true(如果其他单位没有持有deriver执照的员工,则不返回false)。 如何修改以返回正确的结果


我希望返回
fasle
,因为子组织2子组织3没有持有驾照的员工。

虽然不是最简洁的代码,但我认为这是很清楚的

公共支票驾驶执照(机构:任何[]){
代表(组织单位){
//每个单位至少应有一张驾驶执照
if(unit.staff.filter(e=>e.driversLicenceA).length==0){
//该单位没有任何人持有驾驶执照
返回false;
}
}
//如果我们达到这一点,每个单位至少有一名工作人员持有驾驶执照
返回true;
}

虽然不是最简洁的代码,但我认为这一点很容易理解

公共支票驾驶执照(机构:任何[]){
代表(组织单位){
//每个单位至少应有一张驾驶执照
if(unit.staff.filter(e=>e.driversLicenceA).length==0){
//该单位没有任何人持有驾驶执照
返回false;
}
}
//如果我们达到这一点,每个单位至少有一名工作人员持有驾驶执照
返回true;
}
您可以为每个
员工检查
组织
abd

const
组织机构=[{id:1,标题:'Sub Organg 1',员工:[{id:11,姓名:'John',driversLicenseA:false},{id:12,姓名:'Mike',driversLicenseA:true},{id:13,姓名:'Daniel',driversLicenseA:false}},{id:2,标题:'Sub Organg 2',员工:[{id:21,姓名:'Gustav',driversLicenseA false},{id:22,姓名:'Sandra driversLicenseA false},{id:23,姓名:'Nikita',driversLicenseA:false}]},{id:3,头衔:'Sub Org 3',单位:[{id:31,姓名:'Carla',driversLicenseA:false},{id:32,姓名:'Augustin',driversLicenseA:false},{id:33,姓名:'Martin',driversLicenseA:false}],
每个组织hasLicenseA=组织。每个({staff})=>
staff.some({driversLicenseA})=>driversLicenseA)
);
console.log(每个组织都有许可证);
您可以为每个
员工检查
组织

const
组织机构=[{id:1,标题:'Sub Organg 1',员工:[{id:11,姓名:'John',driversLicenseA:false},{id:12,姓名:'Mike',driversLicenseA:true},{id:13,姓名:'Daniel',driversLicenseA:false}},{id:2,标题:'Sub Organg 2',员工:[{id:21,姓名:'Gustav',driversLicenseA false},{id:22,姓名:'Sandra driversLicenseA false},{id:23,姓名:'Nikita',driversLicenseA:false}]},{id:3,头衔:'Sub Org 3',单位:[{id:31,姓名:'Carla',driversLicenseA:false},{id:32,姓名:'Augustin',driversLicenseA:false},{id:33,姓名:'Martin',driversLicenseA:false}],
每个组织hasLicenseA=组织。每个({staff})=>
staff.some({driversLicenseA})=>driversLicenseA)
);

log(每个组织都有许可证);
这里有些东西应该会有所帮助

let组织=[
{
id:1,
标题:“子组织1”,
工作人员:[
{
id:11,
姓名:'约翰',
司机执照A:是的,
},
{
id:12,
名字:“迈克”,
司机执照A:是的,
},
{
id:13,
名字:“丹尼尔”,
司机执照A:是的,
}
]
},
{
id:2,
标题:“子组织1”,
工作人员:[
{
id:11,
姓名:'约翰',
司机执照A:错,
},
{
id:12,
名字:“迈克”,
司机执照A:错,
},
{
id:13,
名字:“丹尼尔”,
司机执照A:错,
}
]
},
{
id:3,
标题:“子组织2”,
工作人员:[
{
id:21,
姓名:“古斯塔夫”,
司机执照A:错,
},
{
身份证号码:22,
姓名:“桑德拉”,
司机执照A:是的,
},
{
id:23,
名字:“尼基塔”,
司机执照A:错,
}
]
},
{
id:4,
标题:“子组织3”,
工作人员:[
{
身份证号码:31,
姓名:'卡拉',
司机执照A:是的,
},
{
id:32,
姓名:“奥古斯丁”,
司机执照A:是的,
},
{
身份证号码:33,
姓名:'马丁',
司机执照A:错,
}
]
},         
];
//让我们在集合上循环并尝试访问staff属性!
organization.forEach((或)=>{
drivers=or.staff;//这些是我们的员工。
//让我们对员工进行循环,看看是否至少有一名员工不符合标准。
//reduce函数将允许我们迭代所有值,并在最后返回一个值。
//我们只是将每次迭代的值与之前的值进行比较。
//检查当前值是否正确