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

246
Vistas
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 Respuestas
Responde la pregunta

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 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