Quiero crear un objeto expectedObj a partir de currentObj para enviarlo como respuesta a la API. ¿Cómo puedo hacerlo?
El "valor" y la "etiqueta" siempre tendrán los mismos valores.
Estos son juegos fijos de llaves. ignore_whitespace no es necesario en el objeto esperado. No es necesario quitar otras llaves.
let currentObj = { "partnerId": "1", "platform": { "label": "ADP", "value": "ADP" }, "subPlatform": { "value": "Health", "label": "Health" }, "activeIndicator": { "value": "Inactive", "label": "Inactive" }, "partnerNotes": "", "ignore_whitespace": false } let expectedObj={ "partnerId": "1", "platform": "ADP", "subPlatform": Health, "activeIndicator": "Inactive", "partnerNotes": "" }Lo que he probado es esto
for let (item in currentObj) { something }Algo como esto debería hacer lo que estás buscando:
const expectedObj = Object.entries(currentObj).reduce((a, [k, v]) => { if (v?.value !== undefined) a[k] = v.value; else a[k] = v; return a; }, {});Expanda este fragmento de código para ver un ejemplo de trabajo:
const currentObj = { partnerId: '1', platform: { label: 'ADP', value: 'ADP', }, subPlatform: { value: 'Health', label: 'Health', }, activeIndicator: { value: 'Inactive', label: 'Inactive', }, partnerNotes: '', ignore_whitespace: false, }; const expectedObj = Object.entries(currentObj).reduce((a, [k, v]) => { if (v?.value !== undefined) a[k] = v.value; else a[k] = v; return a; }, {}); console.log(expectedObj);Esto hará las transformaciones que necesita (como se explica en los comentarios, no se esperan más claves, los valores son siempre los mismos que las etiquetas, etc.):
let currentObj = { "partnerId": "1", "platform": { "label": "ADP", "value": "ADP" }, "subPlatform": { "value": "Health", "label": "Health" }, "activeIndicator": { "value": "Inactive", "label": "Inactive" }, "partnerNotes": "", "ignore_whitespace": false } let expected = { ...currentObj, platform: currentObj.platform.value, subPlatform: currentObj.subPlatform.value, activeIndicator: currentObj.activeIndicator.value, } delete expected.ignore_whitespace; console.log(expected);