Why does this badge validator alternate between valid and invalid?
const BADGE_PATTERNS = {
scout: /^SCOUT-[A-Z]{3}-\d{4}$/g,
ranger: /^RANGER-[A-Z]{2}-\d{3}$/g,
pilot: /^PILOT-\d{4}-[A-Z]{2}$/g
};
function validateRosterBadges(roster) {
const results = [];
for (const member of roster) {
const pattern = BADGE_PATTERNS[member.role];
if (!pattern) {
results.push({
id: member.id,
role: member.role,
badge: member.badge,
status: 'UNKNOWN_ROLE'
});
continue;
}
const isValid = pattern.test(member.badge);
results.push({
id: member.id,
role: member.role,
badge: member.badge,
status: isValid ? 'APPROVED' : 'REJECTED'
});
}
return results;
}
const squad = [
{ id: 101, role: 'scout', badge: 'SCOUT-ABC-1234' },
{ id: 102, role: 'scout', badge: 'SCOUT-XYZ-9876' },
{ id: 103, role: 'scout', badge: 'SCOUT-DEF-4567' }
];
console.log(validateRosterBadges(squad));
Reply with what is broken and how you would fix it.