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函数将允许我们迭代所有值,并在最后返回一个值。
//我们只是将每次迭代的值与之前的值进行比较。
//检查当前值是否正确