Tengo una matriz de cadenas que tiene el nombre de algunos campos en particular, como se muestra:
const fields = [ "FULL_NAME", "EMAIL_ADDRESS", "PHONE_NUMBER", "HOME_ADDRESS" ]y el objeto que se supone que almacena el estado de estos campos como:
const obj = { "FULL_NAME": { firstName: "John", lastName: "Doe" }, "PHONE_NUMBER": "" }Observe cómo faltan algunos de los campos en comparación con la matriz, como "EMAIL_ADDRESS" y "HOME ADDRESS".
De alguna manera quiero comparar estos dos y quiero que la función devuelva verdadero solo si todos los campos mencionados en la matriz de 'campos' están presentes en el objeto de datos 'obj' CON ALGUNOS DATOS presentes en ellos ( str.length > 0 ).
¿Cómo logro esto?
Puede usar la función Array.every para su caso de uso.
const hasAllFieldsIn = (fields, obj) => { const keys = Object.keys(obj); return fields.every(item => keys.indexOf(item) >= 0 && !!obj[item]); } const fields = [ "FULL_NAME", "EMAIL_ADDRESS", "PHONE_NUMBER", "HOME_ADDRESS" ] const obj = { "FULL_NAME": { firstName: "John", lastName: "Doe" }, "PHONE_NUMBER": "" } const obj2 = { "FULL_NAME": { firstName: "John", lastName: "Doe" }, "PHONE_NUMBER": "", "EMAIL_ADDRESS": "a@b.com", "HOME_ADDRESS": "" } const obj3 = { "FULL_NAME": { firstName: "John", lastName: "Doe" }, "PHONE_NUMBER": "837362638", "EMAIL_ADDRESS": "a@b.com", "HOME_ADDRESS": "zz" } console.log(hasAllFieldsIn(fields, obj)) console.log(hasAllFieldsIn(fields, obj2)) console.log(hasAllFieldsIn(fields, obj3))