Javascript 带有复选框网格的Typescript,带有管道分隔值和自定义验证规则

Javascript 带有复选框网格的Typescript,带有管道分隔值和自定义验证规则,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个复选框网格,其中包含AccountID(x位数)和文件名作为值的组合。每对值都用管道分隔 文件名总是以PRC或FE开头,然后是各种字母组合。 '{accountId}{fileName}' 验证规则:任何AccountID的文件名类型都不能超过1(PRC或FE) const checkedItems=[ “12345 | PRC-3343”, “12345 | FELMP”, “567892 | PRC-3343”, “567892 | feio”, “12345 | PRCNOWAY”

我有一个复选框网格,其中包含AccountID(x位数)和文件名作为值的组合。每对值都用管道分隔

文件名总是以PRC或FE开头,然后是各种字母组合。
'{accountId}{fileName}'

验证规则:任何AccountID的文件名类型都不能超过1(PRCFE

const checkedItems=[
“12345 | PRC-3343”,
“12345 | FELMP”,
“567892 | PRC-3343”,
“567892 | feio”,
“12345 | PRCNOWAY”
];
//数据集应该从验证方法返回false
//它无效,因为有两个帐户ID为12345的PRC文件
validateForm(checkedItems:字符串[]){
//查找重复项
}
formValid=this.validateForm(checkedItems);
非常感谢你的帮助。我正在寻找一种优化的方法来确定表单值是否有效。谢谢。

回答基于


常量checkedItems=[
“12345 | PRC-3343”,
“12345 | FELMP”,
“567892 | PRC-3343”,
“567892 | feio”,
“12345 | PCNOWAY”
];
函数validateForm(checkedItems:string[]):布尔值{
const parsedCheckedItems=parseValues(checkedItems);
return!checkDups(parsedcheckedims);
}
函数解析值(checkedItems:string[]):string[]{
返回checkedItems.map(项=>{
常量pipeIdx=item.indexOf(“|”);
返回项。子项(1,pipeIdx+1);
});
}
函数checkDups(parsedCheckdItems:string[]):布尔值{
返回新集合(parsedCheckedItems).size!==parsedCheckedItems.length;
}
const formValid=validateForm(checkedItems);
console.log(formValid);
根据


常量checkedItems=[
“12345 | PRC-3343”,
“12345 | FELMP”,
“567892 | PRC-3343”,
“567892 | feio”,
“12345 | PCNOWAY”
];
函数validateForm(checkedItems:string[]):布尔值{
const parsedCheckedItems=parseValues(checkedItems);
return!checkDups(parsedcheckedims);
}
函数解析值(checkedItems:string[]):string[]{
返回checkedItems.map(项=>{
常量pipeIdx=item.indexOf(“|”);
返回项。子项(1,pipeIdx+1);
});
}
函数checkDups(parsedCheckdItems:string[]):布尔值{
返回新集合(parsedCheckedItems).size!==parsedCheckedItems.length;
}
const formValid=validateForm(checkedItems);
console.log(formValid);
['123|PRC1', '123|FE1']  // Good

['123|PRC1', '123|PRC2'] // BAD b/c 2 PRC filename types with same accountId

['123|FE1', '123|FE2']   // BAD b/c 2 FE filenames types with same accountId