I have been suffering from an issue. What I want to do is adding some validation rule for my data. The example of data is written below.
const data = [
{ name: 'Benz', class: 'Car', grade: 'A', isDefault: true },
{ name: 'BMW', class: 'Car', grade: 'B', isDefault: true },
{ name: 'Ford', class: 'Car', grade: 'C', isDefault: true },
{ name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },
{ name: 'Kia', class: 'Car', grade: 'C', isDefault: true },
{ name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },
{ name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },
{ name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },
{ name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },
{ name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },
{ name: 'John', class: 'Boat', grade: 'D', isDefault: true },
{ name: 'James', class: 'Boat', grade: 'E', isDefault: false },
{ name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },
{ name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },
{ name: 'Ron', class: 'Boat', grade: 'F', isDefault: false },
]
[ Valiation Rule ]
If 'class' and 'grande' are same, it must have one default value (isDefault = true), but default value can not over 1
Maybe it'll be hard to understand this rule. Let's say, Hyundai's case. Hyundai can default value of class 'Car' and grade 'C'. But there are another default value 'Ford' and 'Kia' in class 'Car' && grade 'C'. So, the result of validation is fail.
Let's say class 'Boat' && grade 'F' case. There are no default value that assigned this case. So, the result of validation is fail.
Thank you in advance.
Below is one possible way to achieve the target.
Code Snippet
Explanation
Inline comments added in the snippet above.