Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

244
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda