Tengo una variable de datos JSON que tiene un campo de cliente con 6 propiedades:
const submit = async (values) => { const data = { customer: { firstname: values.firstname, lastname: values.lastname ... }, ... ...Y un formulario en el que las entradas del usuario se envían a la variable JSON:
<Field name="firstname" component={InputField} type="text" /> <Field name="lastname" component={InputField} type="text" /> Estos campos no son obligatorios, pero el objeto de cliente vacío aún se envía a mi API como "cliente": { }
¿Cómo puedo deshacerme de él? Sé que si configuro el objeto del cliente como indefinido, se ignorará de todo el JSON, pero parece que no puedo averiguar dónde debo configurarlo para que no se vea mal.
Supongo que es algo como esto?
data.keys(customer).length > 1 ? customer : undefinedP: ¿Hay alguna forma de verificar dentro de la variable const, que los valores contienen datos del cliente y, de no ser así, el valor predeterminado es indefinido?
Puedes probar esto:
data.customer = Object.keys(data.customer).length ? data.customer : undefinedlet nombre = { d: 'prueba', };
let datos = { nombre: nombre.d ? nombre.d: indefinido, correo electrónico: nombre.correo electrónico? nombre.email : indefinido, };
let name = { d: 'test', }; let data = { name: name.d ? name.d : undefined, email: name.email ? name.email : undefined, }; console.log('data===>', data);consola.log('datos===>', datos);
Al usar la palabra clave eliminar, puede eliminar la propiedad del cliente si está vacía, ahora sus datos tendrán todas las propiedades sin la propiedad del cliente
function isEmpty(obj) { return Object.keys(obj).length === 0; } if('customer' in data) { if(isEmpty(data.customer)) delete data.customer; }