Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
Validation rule for object like array

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.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

You meant something like that? (class first letter == grape => isDefault:true ; class first letter != grape => isDefault:false)

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 }]
for(let elem of data) {elem.isDefault=(elem.class[0]==elem.grade)}
console.log(data)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Below is one possible way to achieve the target.

Code Snippet

// method to validate given class-grade combination
const myValidate = (pClass, pGrade, arr) => {
  // first determine if any data matches the class-grade combination
  const filterData = arr.filter(
    obj => (
      obj.class === pClass &&
      obj.grade === pGrade
    )
  );
  // if yes (ie, class-grade combination exists),
  if (filterData.length > 0) {
    // count how many "isDefault" with value "true" exists
    const defaultTrueCount = filterData.filter(({ isDefault }) => !!isDefault).length;
    // if exactly 1 "isDefault" with value "true", then test "pass"-ed
    // else, "fail"-ed
    if (defaultTrueCount === 1) return 'Pass'
    else return 'Fail';
  } else {
    // no data matched - so case is neither pass nor fail
    return `class: ${pClass} and grade: ${pGrade} combination not found in data`;
  }
};

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 },
];

console.log('validate class: Car, grade: C | result: ', myValidate('Car', 'C', data));
console.log('validate class: Boat, grade: F | result: ', myValidate('Boat', 'F', data));
console.log('validate class: Car, grade: A | result: ', myValidate('Car', 'A', data));
.as-console-wrapper { max-height: 100% !important; top: 0 }

Explanation

Inline comments added in the snippet above.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda