Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

248
Views
Objeto Javascript: verifique cada objeto en una matriz de objetos donde el valor sea igual a

A continuación encontrará problemas generales relacionados con la iteración de objetos y las consultas.

Aquí hay una lista de objetos (dirigida a administrar un formulario de conexión):

 const connexionData = { mail: { value: false, isRequired: true }, password: { value: false, isRequired: true }, name: { value: false, isRequired: false }, }

Aquí hay una variable de matriz que almacena todos los objetos de connexionData const fieldstocheck = [connexionData.mail, connexionData.password, connexionData.name]

Y el propósito de la check de función a continuación es verificar si:

Para cada objeto en los campos para fieldstocheck dónde se isRequired es verdadero, si el value es falso, devuelve verdadero o, de lo contrario, devuelve falso

 const check = () => { if((fieldstocheck.filter(key => key.isRequired).every(val => !val.value))) { return true } else { return false } }

Esta función hace el trabajo en general. Con los valores de objeto actuales, devuelve true y false si los values se cambian a true o a ""

Pero me preguntaba si habría una forma más rápida o más elegante de alcanzar el mismo objetivo.

y, sí, que tengan un buen día a todos

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El resultado que busca es un booleano, pero actualmente está usando .filter() que crea una matriz intermedia. Puede eliminar .filter() y, en su lugar, llamar a .every() directamente en los campos para fieldstocheck la matriz para evitar crear una nueva matriz en la memoria. Eliminar el filtro también hace menos iteraciones ya que solo está iterando su matriz una vez:

 const connexionData = { mail: { value: false, isRequired: true }, password: { value: false, isRequired: true }, name: { value: false, isRequired: false }, } const fieldstocheck = [connexionData.mail, connexionData.password, connexionData.name]; const res = fieldstocheck.every((obj) => !obj.isRequired || !obj.value); console.log(res);

En lo anterior, primero verificamos si isRequired es false con !obj.isRequired . Si es false , el método de devolución de llamada .every() devuelve true para ese objeto (ya que estamos negando ! isRequired ). Cuando el primer operando de || es verdad, el || cortocircuitos, por lo que no nos preocupamos de verificar el lado derecho del || . De lo contrario, si isRequired es true , verificamos el lado derecho de la condición para verificar si obj.value es falso: !obj.value .

En lógica propsitonal, la condición anterior:

 !obj.isRequired || !obj.value

es lógicamente equivalente a

 !(obj.isRequired && obj.value)

(consulte la ley de De Morgan para obtener más detalles), por lo que también podríamos haber usado esto como nuestra condición. Puede interpretar esto como: si el objeto es obligatorio y tiene un valor, devuelve false ; de lo contrario, true (si no es obligatorio o no tiene un valor).

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!